fixed possible buffer overflows in string handling
This commit is contained in:
parent
a3176877f6
commit
578a10398a
|
@ -63,7 +63,7 @@ extern DWORD ds_start;
|
||||||
#define KEY_SELECT ds_select
|
#define KEY_SELECT ds_select
|
||||||
#define KEY_DEBUG ds_debug
|
#define KEY_DEBUG ds_debug
|
||||||
|
|
||||||
void GetINIPath(char *inipath)
|
void GetINIPath(char *inipath,u16 bufferSize)
|
||||||
{
|
{
|
||||||
if (*vPath)
|
if (*vPath)
|
||||||
szPath = vPath;
|
szPath = vPath;
|
||||||
|
@ -77,8 +77,15 @@ void GetINIPath(char *inipath)
|
||||||
if (++p >= vPath) *p = 0;
|
if (++p >= vPath) *p = 0;
|
||||||
szPath = vPath;
|
szPath = vPath;
|
||||||
}
|
}
|
||||||
|
if (strlen(szPath) + strlen("\\desmume.ini") < bufferSize)
|
||||||
sprintf(inipath, "%s\\desmume.ini",szPath);
|
{
|
||||||
|
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)
|
void ReadConfig(void)
|
||||||
|
@ -86,7 +93,7 @@ void ReadConfig(void)
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
GetINIPath(IniName);
|
GetINIPath(IniName,MAX_PATH);
|
||||||
|
|
||||||
i=GetPrivateProfileInt("KEYS","KEY_A",31, IniName);
|
i=GetPrivateProfileInt("KEYS","KEY_A",31, IniName);
|
||||||
KEY_A = i;
|
KEY_A = i;
|
||||||
|
@ -143,7 +150,7 @@ void WriteConfig(void)
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
GetINIPath(IniName);
|
GetINIPath(IniName,MAX_PATH);
|
||||||
|
|
||||||
WritePrivateProfileInt("KEYS","KEY_A",KEY_A,IniName);
|
WritePrivateProfileInt("KEYS","KEY_A",KEY_A,IniName);
|
||||||
WritePrivateProfileInt("KEYS","KEY_B",KEY_B,IniName);
|
WritePrivateProfileInt("KEYS","KEY_B",KEY_B,IniName);
|
||||||
|
|
Loading…
Reference in New Issue