mirror of
https://github.com/Stichting-MINIX-Research-Foundation/xsrc.git
synced 2025-09-11 05:38:32 -04:00
119 lines
4.0 KiB
C
119 lines
4.0 KiB
C
/* $Xorg: setauth.c,v 1.4 2001/02/09 02:03:26 xorgcvs Exp $ */
|
||
/******************************************************************************
|
||
|
||
|
||
Copyright 1993, 1998 The Open Group
|
||
|
||
Permission to use, copy, modify, distribute, and sell this software and its
|
||
documentation for any purpose is hereby granted without fee, provided that
|
||
the above copyright notice appear in all copies and that both that
|
||
copyright notice and this permission notice appear in supporting
|
||
documentation.
|
||
|
||
The above copyright notice and this permission notice shall be included in
|
||
all copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
||
Except as contained in this notice, the name of The Open Group shall not be
|
||
used in advertising or otherwise to promote the sale, use or other dealings
|
||
in this Software without prior written authorization from The Open Group.
|
||
|
||
Author: Ralph Mor, X Consortium
|
||
******************************************************************************/
|
||
/* $XFree86: xc/lib/ICE/setauth.c,v 1.5 2002/05/31 18:45:41 dawes Exp $ */
|
||
|
||
#include <X11/ICE/ICElib.h>
|
||
#include "ICElibint.h"
|
||
#include <X11/ICE/ICEutil.h>
|
||
|
||
|
||
/*
|
||
* IceSetPaAuthData is not a standard part of ICElib, it is specific
|
||
* to the sample implementation.
|
||
*
|
||
* For the client that initiates a Protocol Setup, we look in the
|
||
* .ICEauthority file to get authentication data.
|
||
*
|
||
* For the client accepting the Protocol Setup, we get the data
|
||
* from an in-memory database of authentication data (set by the
|
||
* application calling IceSetPaAuthData). We have to get the data
|
||
* from memory because getting it directly from the .ICEauthority
|
||
* file is not secure - someone can just modify the contents of the
|
||
* .ICEauthority file behind our back.
|
||
*/
|
||
|
||
int _IcePaAuthDataEntryCount = 0;
|
||
#ifndef __UNIXOS2__
|
||
IceAuthDataEntry _IcePaAuthDataEntries[ICE_MAX_AUTH_DATA_ENTRIES];
|
||
#else
|
||
IceAuthDataEntry _IcePaAuthDataEntries[ICE_MAX_AUTH_DATA_ENTRIES] = {0};
|
||
#endif
|
||
|
||
|
||
void
|
||
IceSetPaAuthData (numEntries, entries)
|
||
|
||
int numEntries;
|
||
IceAuthDataEntry *entries;
|
||
|
||
{
|
||
/*
|
||
* _IcePaAuthDataEntries should really be a linked list.
|
||
* On my list of TO DO stuff.
|
||
*/
|
||
|
||
int i, j;
|
||
|
||
for (i = 0; i < numEntries; i++)
|
||
{
|
||
for (j = 0; j < _IcePaAuthDataEntryCount; j++)
|
||
if (strcmp (entries[i].protocol_name,
|
||
_IcePaAuthDataEntries[j].protocol_name) == 0 &&
|
||
strcmp (entries[i].network_id,
|
||
_IcePaAuthDataEntries[j].network_id) == 0 &&
|
||
strcmp (entries[i].auth_name,
|
||
_IcePaAuthDataEntries[j].auth_name) == 0)
|
||
break;
|
||
|
||
if (j < _IcePaAuthDataEntryCount)
|
||
{
|
||
free (_IcePaAuthDataEntries[j].protocol_name);
|
||
free (_IcePaAuthDataEntries[j].network_id);
|
||
free (_IcePaAuthDataEntries[j].auth_name);
|
||
free (_IcePaAuthDataEntries[j].auth_data);
|
||
}
|
||
else
|
||
{
|
||
_IcePaAuthDataEntryCount++;
|
||
}
|
||
|
||
_IcePaAuthDataEntries[j].protocol_name = (char *) malloc (
|
||
strlen (entries[i].protocol_name) + 1);
|
||
strcpy (_IcePaAuthDataEntries[j].protocol_name,
|
||
entries[i].protocol_name);
|
||
|
||
_IcePaAuthDataEntries[j].network_id = (char *) malloc (
|
||
strlen (entries[i].network_id) + 1);
|
||
strcpy (_IcePaAuthDataEntries[j].network_id,
|
||
entries[i].network_id);
|
||
|
||
_IcePaAuthDataEntries[j].auth_name = (char *) malloc (
|
||
strlen (entries[i].auth_name) + 1);
|
||
strcpy (_IcePaAuthDataEntries[j].auth_name,
|
||
entries[i].auth_name);
|
||
|
||
_IcePaAuthDataEntries[j].auth_data_length =
|
||
entries[i].auth_data_length;
|
||
_IcePaAuthDataEntries[j].auth_data = (char *) malloc (
|
||
entries[i].auth_data_length);
|
||
memcpy (_IcePaAuthDataEntries[j].auth_data,
|
||
entries[i].auth_data, entries[i].auth_data_length);
|
||
}
|
||
}
|