Update of /cvsroot/pywin32/pywin32/win32/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9839/win32/src
Modified Files:
win32security.i
Log Message:
Fix placement of some declarations that were causing an intermittent bug in SetTokenInformation
Index: win32security.i
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/win32security.i,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** win32security.i 23 Nov 2003 16:42:18 -0000 1.14
--- win32security.i 27 Feb 2004 23:36:20 -0000 1.15
***************
*** 1319,1322 ****
--- 1319,1326 ----
static PyObject *PySetTokenInformation(PyObject *self, PyObject *args)
{
+ TOKEN_DEFAULT_DACL tdd;
+ TOKEN_OWNER towner;
+ TOKEN_PRIMARY_GROUP tpg;
+ DWORD sessionid=0;
PyObject *obth;
HANDLE th;
***************
*** 1337,1368 ****
switch (typ) {
case TokenOwner: {
! PSID psid;
! TOKEN_OWNER towner;
! if (!PyWinObject_AsSID(obinfo, &psid, FALSE))
! return NULL;
! if (!IsValidSid(psid)){
! PyErr_SetString(PyExc_ValueError, "Invalid SID");
return NULL;
- }
- towner.Owner = psid;
buf = (void *)&towner;
- if (!IsValidSid(towner.Owner)){
- PyErr_SetString(PyExc_ValueError, "Invalid SID in tokenowner");
- return NULL;
- }
bufsize = sizeof(TOKEN_OWNER);
break;
}
case TokenPrimaryGroup: {
! PSID psid;
! TOKEN_PRIMARY_GROUP tpg;
! if (!PyWinObject_AsSID(obinfo, &psid, FALSE))
! return NULL;
! if (!IsValidSid(psid)){
! PyErr_SetString(PyExc_ValueError, "Invalid SID");
return NULL;
- }
- ZeroMemory(&tpg,sizeof(TOKEN_PRIMARY_GROUP));
- tpg.PrimaryGroup = psid;
buf = (void *)&tpg;
bufsize = sizeof(TOKEN_PRIMARY_GROUP);
--- 1341,1353 ----
switch (typ) {
case TokenOwner: {
! if (!PyWinObject_AsSID(obinfo, &towner.Owner, FALSE))
return NULL;
buf = (void *)&towner;
bufsize = sizeof(TOKEN_OWNER);
break;
}
case TokenPrimaryGroup: {
! if (!PyWinObject_AsSID(obinfo, &tpg.PrimaryGroup, FALSE))
return NULL;
buf = (void *)&tpg;
bufsize = sizeof(TOKEN_PRIMARY_GROUP);
***************
*** 1370,1378 ****
}
case TokenDefaultDacl: {
! PACL pacl;
! TOKEN_DEFAULT_DACL tdd;
! if (!PyWinObject_AsACL(obinfo, &pacl, TRUE))
return NULL;
- tdd.DefaultDacl = pacl;
buf = (void *)&tdd;
bufsize = sizeof(TOKEN_DEFAULT_DACL);
--- 1355,1360 ----
}
case TokenDefaultDacl: {
! if (!PyWinObject_AsACL(obinfo, &tdd.DefaultDacl, TRUE))
return NULL;
buf = (void *)&tdd;
bufsize = sizeof(TOKEN_DEFAULT_DACL);
***************
*** 1380,1384 ****
}
case TokenSessionId: {
! DWORD sessionid = PyLong_AsUnsignedLong(obinfo);
buf = (void *)&sessionid;
bufsize = sizeof(DWORD);
--- 1362,1366 ----
}
case TokenSessionId: {
! sessionid = PyLong_AsUnsignedLong(obinfo);
buf = (void *)&sessionid;
bufsize = sizeof(DWORD);
|