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:
spanne 2009-02-28 13:09:22 +00:00
parent 41e68f8f5d
commit d04fb4c03c

View File

@ -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,7 +997,7 @@ 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 );
@ -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