From: RĂ©mi Denis-Courmont Date: Sat, 29 Apr 2006 15:34:09 +0000 (+0000) Subject: Fix likely stack buffer overflow X-Git-Tag: 0.9.0-test0~11375 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=64b797904ffa733c89140d6574e02f7dcd6cef02;p=vlc Fix likely stack buffer overflow --- diff --git a/modules/control/http/mvar.c b/modules/control/http/mvar.c index 145819ea71..aff3b63162 100644 --- a/modules/control/http/mvar.c +++ b/modules/control/http/mvar.c @@ -126,26 +126,18 @@ void E_(mvar_RemoveVar)( mvar_t *v, mvar_t *f ) mvar_t *E_(mvar_GetVar)( mvar_t *s, const char *name ) { - int i; - char base[512], *field, *p; - int i_index; - /* format: name[index].field */ - - field = strchr( name, '.' ); - if( field ) - { - int i = field - name; - strncpy( base, name, i ); - base[i] = '\0'; + char *field = strchr( name, '.' ); + int i = 1 + (field != NULL) ? (field - name) : strlen( name ); + char base[i]; + char *p; + int i_index; + + strlcpy( base, name, i ); + if( field != NULL ) field++; - } - else - { - strcpy( base, name ); - } - if( ( p = strchr( base, '[' ) ) ) + if( ( p = strchr( base, '[' ) ) != NULL ) { *p++ = '\0'; sscanf( p, "%d]", &i_index );