From: Ben Noordhuis Date: Sun, 18 Mar 2012 01:00:09 +0000 (+0100) Subject: q3map2: harden UNIX path sniffer against buffer overflows X-Git-Tag: xonotic-v0.7.0~16^2~6^2~2^2^2~2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=3a959349aca0d064373da680d4c79b66e551e04a;p=xonotic%2Fnetradiant.git q3map2: harden UNIX path sniffer against buffer overflows --- diff --git a/tools/quake3/q3map2/path_init.c b/tools/quake3/q3map2/path_init.c index 5a31644a..901f07fc 100644 --- a/tools/quake3/q3map2/path_init.c +++ b/tools/quake3/q3map2/path_init.c @@ -114,7 +114,7 @@ void LokiInitPaths( char *argv0 ){ path = getenv( "PATH" ); /* do some path divining */ - strcpy( temp, argv0 ); + Q_strncpyz( temp, argv0, sizeof( temp ) ); if ( strrchr( temp, '/' ) ) { argv0 = strrchr( argv0, '/' ) + 1; } @@ -136,17 +136,17 @@ void LokiInitPaths( char *argv0 ){ /* found home dir candidate */ if ( *path == '~' ) { - strcpy( temp, home ); + Q_strncpyz( temp, home, sizeof( temp ) ); path++; } /* concatenate */ if ( last > ( path + 1 ) ) { - strncat( temp, path, ( last - path ) ); - strcat( temp, "/" ); + Q_strncat( temp, sizeof( temp ), path, ( last - path ) ); + Q_strcat( temp, sizeof( temp ), "/" ); } - strcat( temp, "./" ); - strcat( temp, argv0 ); + Q_strcat( temp, sizeof( temp ), "./" ); + Q_strcat( temp, sizeof( temp ), argv0 ); /* verify the path */ if ( access( temp, X_OK ) == 0 ) {