Re: [RFA/win32] Avoid a couple of name collisions in win32-nat.c

Joel Brobecker
2009-01-14T06:23:16Z

[-- Attachment #1: Type: text/plain, Size: 2084 bytes --]

> > >2009-01-07 Joel Brobecker <brobecker@adacore.com>
> > >
> > > * win32-nat.c (kernel32_DebugSetProcessKillOnExit): Renames
> > > DebugSetProcessKillOnExit. Update all uses in this file.
> > > (kernel32_DebugActiveProcessStop): Renames DebugActiveProcessStop.
> > > Update all uses in this file.
>
> This one is now in. I will review ASAP all the names we are using
> when importing routines from DLLs, to see if there are others that
> might need an adjustment.

Just for the record, Chris asked:

| Yes. I guess that means that the rename to prefix kernel32_ is approved
| too but I'd appreciate it if you would universally add the kernel32_ prefix
| to everything that is dynamically derived from kernel32.

I double-checked every call to GetProcAddress, and the kernel32_
prefix is already added to all the function pointers related to
kernel32 routines.

There are a bunch of function pointers whose name is still identical
to the function name:

static BOOL WINAPI (*OpenProcessToken)(HANDLE, DWORD, PHANDLE);
static BOOL WINAPI (*LookupPrivilegeValue)(LPCSTR, LPCSTR, PLUID);
static BOOL WINAPI (*AdjustTokenPrivileges)(HANDLE, BOOL, PTOKEN_PRIVILEGES,
DWORD, PTOKEN_PRIVILEGES, PDWORD);

But these routines are from advapi32.dll, and are declared inside
a function (set_process_priviledge).

I don't think you really wanted me to rename this variables too,
since local variables should not cause a collision (they should just
hide the global names, if any). And because everything is local,
the addition of the advapi32_ prefix does make the reading of the
code a little harder, IMO. But just in case, here is the corresponding
patch. It's untested for now, but I can test it before checking in.
It does compile, though.

2009-01-14 Joel Brobecker <brobecker@adacore.com>

* windows-nat.c (set_process_privilege): Rename OpenProcessToken,
LookupPrivilegeValue and AdjustTokenPrivileges by prefixing them
with "advapi32_". Adjust the code accordingly.

--
Joel

[-- Attachment #2: advapi.diff --]
[-- Type: text/plain, Size: 2909 bytes --]

Index: windows-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/windows-nat.c,v
retrieving revision 1.178
diff -u -p -r1.178 windows-nat.c
--- windows-nat.c 14 Jan 2009 05:27:48 -0000 1.178
+++ windows-nat.c 14 Jan 2009 06:12:23 -0000
@@ -1588,10 +1588,10 @@ static int
set_process_privilege (const char *privilege, BOOL enable)
{
static HMODULE advapi32 = NULL;
- static BOOL WINAPI (*OpenProcessToken)(HANDLE, DWORD, PHANDLE);
- static BOOL WINAPI (*LookupPrivilegeValue)(LPCSTR, LPCSTR, PLUID);
- static BOOL WINAPI (*AdjustTokenPrivileges)(HANDLE, BOOL, PTOKEN_PRIVILEGES,
- DWORD, PTOKEN_PRIVILEGES, PDWORD);
+ static BOOL WINAPI (*advapi32_OpenProcessToken)(HANDLE, DWORD, PHANDLE);
+ static BOOL WINAPI (*advapi32_LookupPrivilegeValue)(LPCSTR, LPCSTR, PLUID);
+ static BOOL WINAPI (*advapi32_AdjustTokenPrivileges)
+ (HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD);

HANDLE token_hdl = NULL;
LUID restore_priv;
@@ -1606,36 +1606,38 @@ set_process_privilege (const char *privi
{
if (!(advapi32 = LoadLibrary ("advapi32.dll")))
goto out;
- if (!OpenProcessToken)
- OpenProcessToken =
+ if (!advapi32_OpenProcessToken)
+ advapi32_OpenProcessToken =
(void *) GetProcAddress (advapi32, "OpenProcessToken");
- if (!LookupPrivilegeValue)
- LookupPrivilegeValue =
+ if (!advapi32_LookupPrivilegeValue)
+ advapi32_LookupPrivilegeValue =
(void *) GetProcAddress (advapi32, "LookupPrivilegeValueA");
- if (!AdjustTokenPrivileges)
- AdjustTokenPrivileges =
+ if (!advapi32_AdjustTokenPrivileges)
+ advapi32_AdjustTokenPrivileges =
(void *) GetProcAddress (advapi32, "AdjustTokenPrivileges");
- if (!OpenProcessToken || !LookupPrivilegeValue || !AdjustTokenPrivileges)
+ if (!advapi32_OpenProcessToken
+ || !advapi32_LookupPrivilegeValue
+ || !advapi32_AdjustTokenPrivileges)
{
advapi32 = NULL;
goto out;
}
}

- if (!OpenProcessToken (GetCurrentProcess (),
- TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,
- &token_hdl))
+ if (!advapi32_OpenProcessToken (GetCurrentProcess (),
+ TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,
+ &token_hdl))
goto out;

- if (!LookupPrivilegeValue (NULL, privilege, &restore_priv))
+ if (!advapi32_LookupPrivilegeValue (NULL, privilege, &restore_priv))
goto out;

new_priv.PrivilegeCount = 1;
new_priv.Privileges[0].Luid = restore_priv;
new_priv.Privileges[0].Attributes = enable ? SE_PRIVILEGE_ENABLED : 0;

- if (!AdjustTokenPrivileges (token_hdl, FALSE, &new_priv,
- sizeof orig_priv, &orig_priv, &size))
+ if (!advapi32_AdjustTokenPrivileges (token_hdl, FALSE, &new_priv,
+ sizeof orig_priv, &orig_priv, &size))
goto out;
#if 0
/* Disabled, otherwise every `attach' in an unprivileged user session