diff options
author | Andrey Nazarov <skuller@skuller.net> | 2011-04-26 16:53:00 +0400 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2011-04-26 19:10:43 +0400 |
commit | 776fa0343672058a66f2ed994e67cfa610189a57 (patch) | |
tree | 9d6a6514d4c40b94c12d4ca928c354c4da9f7f71 | |
parent | 107eb88def58d969e3d4ad3948f3244573da9b0e (diff) |
Silently ignore empty configstrings.
With demo seeking in place image/model/sound registration functions may
be often called with empty names, silently ignore them.
-rw-r--r-- | src/r_images.c | 4 | ||||
-rw-r--r-- | src/r_models.c | 17 | ||||
-rw-r--r-- | src/snd_main.c | 7 |
3 files changed, 23 insertions, 5 deletions
diff --git a/src/r_images.c b/src/r_images.c index d0d2802..3eb4384 100644 --- a/src/r_images.c +++ b/src/r_images.c @@ -1806,6 +1806,10 @@ static qhandle_t register_image( const char *name, imagetype_t type ) { qhandle_t handle; qerror_t ret; + // empty names are legal, silently ignore them + if( !*name ) + return 0; + ret = _register_image( name, type, &handle ); if( handle ) { return handle; diff --git a/src/r_models.c b/src/r_models.c index ee213ef..c15de5a 100644 --- a/src/r_models.c +++ b/src/r_models.c @@ -274,16 +274,27 @@ qhandle_t R_RegisterModel( const char *name ) { mod_load_t load; qerror_t ret; - if( name[0] == '*' ) { + // empty names are legal, silently ignore them + if( !*name ) + return 0; + + if( *name == '*' ) { // inline bsp model index = atoi( name + 1 ); return ~index; } // normalize the path - namelen = FS_NormalizePathBuffer( normalized, name, sizeof( normalized ) ); - if( namelen >= sizeof( normalized ) ) { + namelen = FS_NormalizePathBuffer( normalized, name, MAX_QPATH ); + + // this should never happen + if( namelen >= MAX_QPATH ) Com_Error( ERR_DROP, "%s: oversize name", __func__ ); + + // normalized to empty name? + if( namelen == 0 ) { + Com_DPrintf( "%s: empty name\n", __func__ ); + return 0; } // see if it's already loaded diff --git a/src/snd_main.c b/src/snd_main.c index 2aa1c2e..34767a2 100644 --- a/src/snd_main.c +++ b/src/snd_main.c @@ -384,8 +384,9 @@ qhandle_t S_RegisterSound( const char *name ) { if( !s_started ) return 0; - if( !name ) - Com_Error( ERR_DROP, "%s: NULL", __func__ ); + // empty names are legal, silently ignore them + if( !*name ) + return 0; if( *name == '*' ) { len = Q_strlcpy( buffer, name, MAX_QPATH ); @@ -397,11 +398,13 @@ qhandle_t S_RegisterSound( const char *name ) { len = FS_NormalizePath( buffer, buffer ); } + // this MAY happen after prepending "sound/" if( len >= MAX_QPATH ) { Com_DPrintf( "%s: oversize name\n", __func__ ); return 0; } + // normalized to empty name? if( len == 0 ) { Com_DPrintf( "%s: empty name\n", __func__ ); return 0; |