|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
/**
|
|
|
|
|
* xrdp: A Remote Desktop Protocol server.
|
|
|
|
|
*
|
|
|
|
|
* Copyright (C) Jay Sorg 2004-2013
|
|
|
|
|
* Copyright (C) Jay Sorg 2004-2014
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
@ -20,6 +20,11 @@
|
|
|
|
|
* put all the os / arch define in here you want
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/* To test for Windows (64 bit or 32 bit) use _WIN32 and _WIN64 in addition
|
|
|
|
|
for 64 bit windows. _WIN32 is defined for both.
|
|
|
|
|
To test for Linux use __linux__.
|
|
|
|
|
To test for BSD use BSD */
|
|
|
|
|
|
|
|
|
|
#if defined(HAVE_CONFIG_H)
|
|
|
|
|
#include "config_ac.h"
|
|
|
|
|
#endif
|
|
|
|
@ -60,6 +65,13 @@
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <locale.h>
|
|
|
|
|
|
|
|
|
|
/* this is so we can use #ifdef BSD later */
|
|
|
|
|
/* This is the recommended way of detecting BSD in the
|
|
|
|
|
FreeBSD Porter's Handbook. */
|
|
|
|
|
#if (defined(__unix__) || defined(unix)) && !defined(USG)
|
|
|
|
|
#include <sys/param.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include "os_calls.h"
|
|
|
|
|
#include "arch.h"
|
|
|
|
|
#include "log.h"
|
|
|
|
@ -596,9 +608,11 @@ g_tcp_local_socket(void)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
|
/* returns error */
|
|
|
|
|
int APP_CC
|
|
|
|
|
g_sck_get_peer_cred(int sck, int *pid, int *uid, int *gid)
|
|
|
|
|
{
|
|
|
|
|
#if defined(SO_PEERCRED)
|
|
|
|
|
int ucred_length;
|
|
|
|
|
struct myucred
|
|
|
|
|
{
|
|
|
|
@ -625,6 +639,9 @@ g_sck_get_peer_cred(int sck, int *pid, int *uid, int *gid)
|
|
|
|
|
*gid = credentials.gid;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
@ -3122,15 +3139,25 @@ g_text2bool(const char *s)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
|
/* returns pointer or nil on error */
|
|
|
|
|
void * APP_CC
|
|
|
|
|
g_shmat(int shmid)
|
|
|
|
|
{
|
|
|
|
|
return shmat(shmid, 0, 0);
|
|
|
|
|
#if defined(_WIN32)
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
return shmat(shmid, 0, 0);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
|
/* returns -1 on error */
|
|
|
|
|
int APP_CC
|
|
|
|
|
g_shmdt(const void *shmaddr)
|
|
|
|
|
{
|
|
|
|
|
#if defined(_WIN32)
|
|
|
|
|
return -1;
|
|
|
|
|
#else
|
|
|
|
|
return shmdt(shmaddr);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|