From: Tim S. <mig...@us...> - 2007-01-31 23:25:29
|
Update of /cvsroot/desmume/desmume/src/windows In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv29901/src/windows Modified Files: ConfigKeys.c Log Message: fixed possible buffer overflows in string handling Index: ConfigKeys.c =================================================================== RCS file: /cvsroot/desmume/desmume/src/windows/ConfigKeys.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- ConfigKeys.c 30 Nov 2006 21:43:47 -0000 1.6 +++ ConfigKeys.c 31 Jan 2007 23:25:26 -0000 1.7 @@ -63,7 +63,7 @@ #define KEY_SELECT ds_select #define KEY_DEBUG ds_debug -void GetINIPath(char *inipath) +void GetINIPath(char *inipath,u16 bufferSize) { if (*vPath) szPath = vPath; @@ -77,8 +77,15 @@ if (++p >= vPath) *p = 0; szPath = vPath; } - - sprintf(inipath, "%s\\desmume.ini",szPath); + if (strlen(szPath) + strlen("\\desmume.ini") < bufferSize) + { + sprintf(inipath, "%s\\desmume.ini",szPath); + } else if (bufferSize> strlen(".\\desmume.ini")) { + sprintf(inipath, ".\\desmume.ini",szPath); + } else + { + memset(inipath,0,bufferSize) ; + } } void ReadConfig(void) @@ -86,7 +93,7 @@ FILE *fp; int i; - GetINIPath(IniName); + GetINIPath(IniName,MAX_PATH); i=GetPrivateProfileInt("KEYS","KEY_A",31, IniName); KEY_A = i; @@ -143,7 +150,7 @@ FILE *fp; int i; - GetINIPath(IniName); + GetINIPath(IniName,MAX_PATH); WritePrivateProfileInt("KEYS","KEY_A",KEY_A,IniName); WritePrivateProfileInt("KEYS","KEY_B",KEY_B,IniName); |