summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2011-04-26 16:53:00 +0400
committerAndrey Nazarov <skuller@skuller.net>2011-04-26 19:10:43 +0400
commit776fa0343672058a66f2ed994e67cfa610189a57 (patch)
tree9d6a6514d4c40b94c12d4ca928c354c4da9f7f71
parent107eb88def58d969e3d4ad3948f3244573da9b0e (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.c4
-rw-r--r--src/r_models.c17
-rw-r--r--src/snd_main.c7
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;