Commit 4fd1e8b0 by Arnaud Charlet

[multiple changes]

2009-04-20  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c: Add support for generating a dummy version of
	s-oscons.ads providing all possible constants.

	* g-socthi-mingw.ads: Fix calling convention for __gnat_inet_pton.

	* socket.c (__gnat_inet_pton): On Windows make sure we always use the
	ANSI version (not the UNICODE version) of WSAStringToAddress.

2009-04-20  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_set_OWNER_ACL): properly free memory
	allocated for the security descriptor and make sure all
	handles are closed before leaving this procedure.

From-SVN: r146392
parent 9013065b
2009-04-20 Thomas Quinot <quinot@adacore.com>
* s-oscons-tmplt.c: Add support for generating a dummy version of
s-oscons.ads providing all possible constants.
* g-socthi-mingw.ads: Fix calling convention for __gnat_inet_pton.
* socket.c (__gnat_inet_pton): On Windows make sure we always use the
ANSI version (not the UNICODE version) of WSAStringToAddress.
2009-04-20 Pascal Obry <obry@adacore.com>
* adaint.c (__gnat_set_OWNER_ACL): properly free memory
allocated for the security descriptor and make sure all
handles are closed before leaving this procedure.
2009-04-20 Javier Miranda <miranda@adacore.com> 2009-04-20 Javier Miranda <miranda@adacore.com>
* einfo.ads, einfo.adb (Is_Underlying_Record_View): New subprogram * einfo.ads, einfo.adb (Is_Underlying_Record_View): New subprogram
...@@ -1820,8 +1820,8 @@ __gnat_check_OWNER_ACL ...@@ -1820,8 +1820,8 @@ __gnat_check_OWNER_ACL
PRIVILEGE_SET PrivilegeSet; PRIVILEGE_SET PrivilegeSet;
DWORD dwPrivSetSize = sizeof (PRIVILEGE_SET); DWORD dwPrivSetSize = sizeof (PRIVILEGE_SET);
BOOL fAccessGranted = FALSE; BOOL fAccessGranted = FALSE;
HANDLE hToken; HANDLE hToken = NULL;
DWORD nLength; DWORD nLength = 0;
SECURITY_DESCRIPTOR* pSD = NULL; SECURITY_DESCRIPTOR* pSD = NULL;
GetFileSecurity GetFileSecurity
...@@ -1839,14 +1839,14 @@ __gnat_check_OWNER_ACL ...@@ -1839,14 +1839,14 @@ __gnat_check_OWNER_ACL
(wname, OWNER_SECURITY_INFORMATION | (wname, OWNER_SECURITY_INFORMATION |
GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION,
pSD, nLength, &nLength)) pSD, nLength, &nLength))
return 0; goto error;
if (!ImpersonateSelf (SecurityImpersonation)) if (!ImpersonateSelf (SecurityImpersonation))
return 0; goto error;
if (!OpenThreadToken if (!OpenThreadToken
(GetCurrentThread(), TOKEN_DUPLICATE | TOKEN_QUERY, FALSE, &hToken)) (GetCurrentThread(), TOKEN_DUPLICATE | TOKEN_QUERY, FALSE, &hToken))
return 0; goto error;
/* Undoes the effect of ImpersonateSelf. */ /* Undoes the effect of ImpersonateSelf. */
...@@ -1867,9 +1867,17 @@ __gnat_check_OWNER_ACL ...@@ -1867,9 +1867,17 @@ __gnat_check_OWNER_ACL
&dwPrivSetSize, /* size of PrivilegeSet buffer */ &dwPrivSetSize, /* size of PrivilegeSet buffer */
&dwAccessAllowed, /* receives mask of allowed access rights */ &dwAccessAllowed, /* receives mask of allowed access rights */
&fAccessGranted)) &fAccessGranted))
return 0; goto error;
CloseHandle (hToken);
HeapFree (GetProcessHeap (), 0, pSD);
return fAccessGranted; return fAccessGranted;
error:
if (hToken)
CloseHandle (hToken);
HeapFree (GetProcessHeap (), 0, pSD);
return 0;
} }
static void static void
......
...@@ -234,7 +234,7 @@ private ...@@ -234,7 +234,7 @@ private
pragma Import (Stdcall, C_Getpeername, "getpeername"); pragma Import (Stdcall, C_Getpeername, "getpeername");
pragma Import (Stdcall, C_Getsockname, "getsockname"); pragma Import (Stdcall, C_Getsockname, "getsockname");
pragma Import (Stdcall, C_Getsockopt, "getsockopt"); pragma Import (Stdcall, C_Getsockopt, "getsockopt");
pragma Import (Stdcall, Inet_Pton, "__gnat_inet_pton"); pragma Import (C, Inet_Pton, "__gnat_inet_pton");
pragma Import (Stdcall, C_Ioctl, "ioctlsocket"); pragma Import (Stdcall, C_Ioctl, "ioctlsocket");
pragma Import (Stdcall, C_Listen, "listen"); pragma Import (Stdcall, C_Listen, "listen");
pragma Import (Stdcall, C_Recv, "recv"); pragma Import (Stdcall, C_Recv, "recv");
......
...@@ -79,10 +79,6 @@ pragma Style_Checks ("M32766"); ...@@ -79,10 +79,6 @@ pragma Style_Checks ("M32766");
** **
**/ **/
#ifndef TARGET
# error Please define TARGET
#endif
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <limits.h> #include <limits.h>
...@@ -95,6 +91,26 @@ pragma Style_Checks ("M32766"); ...@@ -95,6 +91,26 @@ pragma Style_Checks ("M32766");
#include "gsocket.h" #include "gsocket.h"
#ifdef DUMMY
# if defined (TARGET)
# error TARGET may not be defined when generating the dummy version
# else
# define TARGET "batch runtime compilation (dummy values)"
# endif
# if !(defined (HAVE_SOCKETS) && defined (HAVE_TERMIOS))
# error Features missing on platform
# endif
# define NATIVE
#endif
#ifndef TARGET
# error Please define TARGET
#endif
#ifndef HAVE_SOCKETS #ifndef HAVE_SOCKETS
# include <errno.h> # include <errno.h>
#endif #endif
...@@ -109,8 +125,16 @@ pragma Style_Checks ("M32766"); ...@@ -109,8 +125,16 @@ pragma Style_Checks ("M32766");
#ifdef NATIVE #ifdef NATIVE
#include <stdio.h> #include <stdio.h>
#ifdef DUMMY
int counter = 0;
# define _VAL(x) counter++
#else
# define _VAL(x) x
#endif
#define CND(name,comment) \ #define CND(name,comment) \
printf ("\n->CND:$%d:" #name ":$%d:" comment, __LINE__, ((int) name)); printf ("\n->CND:$%d:" #name ":$%d:" comment, __LINE__, ((int) _VAL (name)));
#define CNS(name,comment) \ #define CNS(name,comment) \
printf ("\n->CNS:$%d:" #name ":" name ":" comment, __LINE__); printf ("\n->CNS:$%d:" #name ":" name ":" comment, __LINE__);
...@@ -1179,9 +1203,11 @@ TXT(" Thread_Blocking_IO : constant Boolean := True;") ...@@ -1179,9 +1203,11 @@ TXT(" Thread_Blocking_IO : constant Boolean := True;")
/** /**
** System-specific constants follow ** System-specific constants follow
** Each section should be activated if compiling for the corresponding
** platform *or* generating the dummy version for runtime test compilation.
**/ **/
#ifdef __vxworks #if defined (__vxworks) || defined (DUMMY)
/* /*
...@@ -1198,7 +1224,7 @@ CND(ERROR, "VxWorks generic error") ...@@ -1198,7 +1224,7 @@ CND(ERROR, "VxWorks generic error")
#endif #endif
#ifdef __MINGW32__ #if defined (__MINGW32__) || defined (DUMMY)
/* /*
------------------------------ ------------------------------
...@@ -1220,7 +1246,7 @@ CND(WSAEDISCON, "Disconnected") ...@@ -1220,7 +1246,7 @@ CND(WSAEDISCON, "Disconnected")
putchar ('\n'); putchar ('\n');
#endif #endif
#ifdef __APPLE__ #if defined (__APPLE__) || defined (DUMMY)
/* /*
------------------------------- -------------------------------
......
...@@ -422,7 +422,7 @@ __gnat_inet_pton (int af, const char *src, void *dst) { ...@@ -422,7 +422,7 @@ __gnat_inet_pton (int af, const char *src, void *dst) {
int rc; int rc;
ss.ss_family = af; ss.ss_family = af;
rc = WSAStringToAddress (src, af, NULL, (struct sockaddr *)&ss, &sslen); rc = WSAStringToAddressA (src, af, NULL, (struct sockaddr *)&ss, &sslen);
if (rc > 0) { if (rc > 0) {
switch (af) { switch (af) {
case AF_INET: case AF_INET:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment