Use snprintf or _snprintf instead of the potentially dangerous sprintf
to avoid warnings. NOTE: Due to excessive use of #ifdefs, the joystick code is on the border of being unmaintainable! I could only check that it compiles cleanly on my Linux box. Others should test this on their platforms (Windows, Mac OS X, *BSD) to make sure that nothing has been broken. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@784 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
41e68f8f5d
commit
d04fb4c03c
@ -230,7 +230,7 @@ static int fghJoystickFindUSBdev(char *name, char *out, int outlen)
|
|||||||
static int protection_warned = 0;
|
static int protection_warned = 0;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < 16; i++) {
|
||||||
sprintf(buf, "%s%d", USBDEV, i);
|
snprintf(buf, sizeof(buf), "%s%d", USBDEV, i);
|
||||||
f = open(buf, O_RDONLY);
|
f = open(buf, O_RDONLY);
|
||||||
if (f >= 0) {
|
if (f >= 0) {
|
||||||
cp = fghJoystickWalkUSBdev(f, name, out, outlen);
|
cp = fghJoystickWalkUSBdev(f, name, out, outlen);
|
||||||
@ -997,9 +997,9 @@ static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Open .. MediaResources\CurrentJoystickSettings */
|
/* Open .. MediaResources\CurrentJoystickSettings */
|
||||||
sprintf ( buffer, "%s\\%s\\%s",
|
_snprintf ( buffer, sizeof(buffer), "%s\\%s\\%s",
|
||||||
REGSTR_PATH_JOYCONFIG, joy->jsCaps.szRegKey,
|
REGSTR_PATH_JOYCONFIG, joy->jsCaps.szRegKey,
|
||||||
REGSTR_KEY_JOYCURR );
|
REGSTR_KEY_JOYCURR );
|
||||||
|
|
||||||
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey);
|
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey);
|
||||||
|
|
||||||
@ -1009,7 +1009,7 @@ static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
|
|||||||
dwcb = sizeof(OEMKey);
|
dwcb = sizeof(OEMKey);
|
||||||
|
|
||||||
/* JOYSTICKID1-16 is zero-based; registry entries for VJOYD are 1-based. */
|
/* JOYSTICKID1-16 is zero-based; registry entries for VJOYD are 1-based. */
|
||||||
sprintf ( buffer, "Joystick%d%s", joy->js_id + 1, REGSTR_VAL_JOYOEMNAME );
|
_snprintf ( buffer, sizeof(buffer), "Joystick%d%s", joy->js_id + 1, REGSTR_VAL_JOYOEMNAME );
|
||||||
|
|
||||||
lr = RegQueryValueEx ( hKey, buffer, 0, 0, (LPBYTE) OEMKey, &dwcb);
|
lr = RegQueryValueEx ( hKey, buffer, 0, 0, (LPBYTE) OEMKey, &dwcb);
|
||||||
RegCloseKey ( hKey );
|
RegCloseKey ( hKey );
|
||||||
@ -1017,7 +1017,7 @@ static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
|
|||||||
if ( lr != ERROR_SUCCESS ) return 0;
|
if ( lr != ERROR_SUCCESS ) return 0;
|
||||||
|
|
||||||
/* Open OEM Key from ...MediaProperties */
|
/* Open OEM Key from ...MediaProperties */
|
||||||
sprintf ( buffer, "%s\\%s", REGSTR_PATH_JOYOEM, OEMKey );
|
_snprintf ( buffer, sizeof(buffer), "%s\\%s", REGSTR_PATH_JOYOEM, OEMKey );
|
||||||
|
|
||||||
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey );
|
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey );
|
||||||
|
|
||||||
@ -1325,7 +1325,7 @@ static void fghJoystickOpen( SFG_Joystick* joy )
|
|||||||
if( joy->error )
|
if( joy->error )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sprintf( joyfname, "%s/.joy%drc", getenv( "HOME" ), joy->id );
|
snprintf( joyfname, sizeof(buffer), "%s/.joy%drc", getenv( "HOME" ), joy->id );
|
||||||
|
|
||||||
joyfile = fopen( joyfname, "r" );
|
joyfile = fopen( joyfname, "r" );
|
||||||
joy->error =( joyfile == NULL );
|
joy->error =( joyfile == NULL );
|
||||||
@ -1488,7 +1488,7 @@ static void fghJoystickInit( int ident )
|
|||||||
|
|
||||||
#if TARGET_HOST_MACINTOSH
|
#if TARGET_HOST_MACINTOSH
|
||||||
fgJoystick[ ident ]->id = ident;
|
fgJoystick[ ident ]->id = ident;
|
||||||
sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident ); /* FIXME */
|
snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident ); /* FIXME */
|
||||||
fgJoystick[ ident ]->error = GL_FALSE;
|
fgJoystick[ ident ]->error = GL_FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1563,18 +1563,18 @@ static void fghJoystickInit( int ident )
|
|||||||
if( ident < USB_IDENT_OFFSET )
|
if( ident < USB_IDENT_OFFSET )
|
||||||
fgJoystick[ ident ]->os->is_analog = 1;
|
fgJoystick[ ident ]->os->is_analog = 1;
|
||||||
if( fgJoystick[ ident ]->os->is_analog )
|
if( fgJoystick[ ident ]->os->is_analog )
|
||||||
sprintf( fgJoystick[ ident ]->os->fname, "%s%d", AJSDEV, ident );
|
snprintf( fgJoystick[ ident ]->os->fname, sizeof(fgJoystick[ ident ]->os->fname), "%s%d", AJSDEV, ident );
|
||||||
else
|
else
|
||||||
sprintf( fgJoystick[ ident ]->os->fname, "%s%d", UHIDDEV,
|
snprintf( fgJoystick[ ident ]->os->fname, sizeof(fgJoystick[ ident ]->os->fname), "%s%d", UHIDDEV,
|
||||||
ident - USB_IDENT_OFFSET );
|
ident - USB_IDENT_OFFSET );
|
||||||
# elif defined( __linux__ )
|
# elif defined( __linux__ )
|
||||||
fgJoystick[ ident ]->id = ident;
|
fgJoystick[ ident ]->id = ident;
|
||||||
fgJoystick[ ident ]->error = GL_FALSE;
|
fgJoystick[ ident ]->error = GL_FALSE;
|
||||||
|
|
||||||
sprintf( fgJoystick[ident]->fname, "/dev/input/js%d", ident );
|
snprintf( fgJoystick[ident]->fname, sizeof(fgJoystick[ident]->fname), "/dev/input/js%d", ident );
|
||||||
|
|
||||||
if( access( fgJoystick[ ident ]->fname, F_OK ) != 0 )
|
if( access( fgJoystick[ ident ]->fname, F_OK ) != 0 )
|
||||||
sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident );
|
snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident );
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user