CVS: winex/scheduler client.c, 1.54, 1.55 process.c, 1.60, 1.61
[email protected] 1 Aug 2007 12:22:54 -0000
| Newsgroups | gmane.comp.emulators.winex.cvs |
|---|---|
| Message-ID | <[email protected]> |
Subject: winex/scheduler client.c,1.54,1.55 process.c,1.60,1.61Update of /var/lib/cvsd/cvsroot/winex/scheduler
In directory agravaine:/tmp/cvs-serv27315/scheduler
Modified Files:
client.c process.c
Log Message:
- fixed GetModuleFileNameA() to properly return a truncated filename error code. GetModuleFileNameW() just calls GetModuleFileNameA(), so its error codes should be updated as well.
- fixed all the calls to GetModuleFileNameA/W() to check for small buffer and bad module errors. Currently small buffer errors are just reported and are allowed to proceed with either an empty string or truncated string for the filename. In the case of an error retrieving the module filename (error == 0), the calling function reports the error and returns immediately.
Index: client.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/scheduler/client.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- client.c 31 Jul 2007 20:06:14 -0000 1.54
+++ client.c 1 Aug 2007 12:22:52 -0000 1.55
@@ -216,6 +216,7 @@
char buffer[MAX_PATH+16];
HKEY hkey, appkey = 0;
BOOL disabled = TRUE;
+ DWORD error;
/* If we don't have an fd_server socket, we can't do shm. */
if( fd_server_socket == -1 ) return TRUE;
@@ -229,7 +230,7 @@
/* open the app-specific key */
if (GetModuleFileName16( GetCurrentTask(), buffer, MAX_PATH ) ||
- GetModuleFileNameA( 0, buffer, MAX_PATH ))
+ ((error = GetModuleFileNameA( 0, buffer, MAX_PATH )) != 0 && error != MAX_PATH))
{
HKEY tmpkey;
char *p, *appname = buffer;
@@ -243,6 +244,10 @@
}
}
+ else
+ ERR("could not retrieve the module file name (reason: '%s')\n", error == 0 ? "bad module" : "buffer too small");
+
+
if (!get_config_key( hkey, appkey, "SHMWineserver", buffer, sizeof(buffer) ))
disabled = IS_OPTION_FALSE( buffer[0] );
@@ -254,6 +259,7 @@
char buffer[MAX_PATH+16];
HKEY hkey, appkey = 0;
BOOL disabled = TRUE;
+ DWORD error;
if (RegCreateKeyExA( HKEY_LOCAL_MACHINE, "Software\\Wine\\Wine\\Config\\Wineserver", 0, NULL,
REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, NULL ))
@@ -264,7 +270,7 @@
/* open the app-specific key */
if (GetModuleFileName16( GetCurrentTask(), buffer, MAX_PATH ) ||
- GetModuleFileNameA( 0, buffer, MAX_PATH ))
+ ((error = GetModuleFileNameA( 0, buffer, MAX_PATH )) != 0 && error != MAX_PATH))
{
HKEY tmpkey;
char *p, *appname = buffer;
@@ -278,6 +284,10 @@
}
}
+ else
+ ERR("could not retrieve the module file name (reason: '%s')\n", error == 0 ? "bad module" : "buffer too small");
+
+
if (!get_config_key( hkey, appkey, "Scheduler", buffer, sizeof(buffer) ))
disabled = IS_OPTION_FALSE( buffer[0] );
Index: process.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/scheduler/process.c,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -d -r1.60 -r1.61
--- process.c 31 Jul 2007 20:06:14 -0000 1.60
+++ process.c 1 Aug 2007 12:22:52 -0000 1.61
@@ -452,9 +452,10 @@
HKEY appkey = 0;
BOOL disabled = FALSE;
DWORD size;
+ DWORD error;
if (GetModuleFileName16( GetCurrentTask(), buffer, MAX_PATH ) ||
- GetModuleFileNameA( 0, buffer, MAX_PATH ))
+ ((error = GetModuleFileNameA( 0, buffer, MAX_PATH )) != 0 && error != MAX_PATH))
{
HKEY tmpkey;
char *p, *appname = buffer;
@@ -468,6 +469,10 @@
}
}
+ else
+ ERR("could not retrieve the module file name (reason: '%s')\n", error == 0 ? "bad module" : "buffer too small");
+
+
size = sizeof(buffer);
if (appkey && !RegQueryValueExA( appkey, "Disable", 0, NULL, (LPBYTE)buffer, &size ))
disabled = IS_OPTION_TRUE( buffer[0] );