Revert "correct realloc() usage, on failure realloc will return NULL"
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 25 May 2009 14:42:04 +0000 (17:42 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 25 May 2009 14:42:45 +0000 (17:42 +0300)
Brought to you by M2X. Needless to mention that this is complete 100%
crap. Depending cases, it's not either ignoring errors (and e.g. leaking
memory which is very stupid in OOM situations), or worse, introducing
bugs in places where realloc() was used correctly.

And exactly one day after I WARNED EXPLICITLY AGAINST DOING THIS.

This reverts commit ec5d86115480e2ba0f3b36b11c19570cbc75aa51.

13 files changed:
src/control/media_list_path.h
src/extras/libc.c
src/input/es_out.c
src/input/input.c
src/input/stream.c
src/input/vlmshell.c
src/modules/entry.c
src/modules/modules.c
src/network/acl.c
src/network/httpd.c
src/network/io.c
src/playlist/fetcher.c
src/text/strings.c

index da387e1..c3e698d 100644 (file)
@@ -61,15 +61,10 @@ static inline int libvlc_media_list_path_deepness( libvlc_media_list_path_t path
  **************************************************************************/
 static inline void libvlc_media_list_path_append( libvlc_media_list_path_t * p_path, int index )
 {
-    libvlc_media_list_path_t *p_tmp;
     int old_deepness = libvlc_media_list_path_deepness( *p_path );
-    *p_tmp = realloc( *p_path, sizeof(int)*(old_deepness+2));
-    if( *p_tmp )
-    {
-        *p_tmp = *p_path;
-        *p_path[old_deepness] = index;
-        *p_path[old_deepness+1] = -1;
-    }
+    *p_path = realloc( *p_path, sizeof(int)*(old_deepness+2));
+    *p_path[old_deepness] = index;
+    *p_path[old_deepness+1] = -1;
 }
 
 /**************************************************************************
index 8e9a411..6473497 100644 (file)
@@ -571,9 +571,7 @@ int __vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv,
               || i_read == 0 )
             break;
         *pi_data += i_read;
-        char *p_tmp = realloc( *pp_data, *pi_data + 1025 );
-        if( p_tmp )
-            *pp_data = p_tmp;
+        *pp_data = realloc( *pp_data, *pi_data + 1025 );
     }
 
     while ( !p_object->b_die
index 85cebf1..22d4026 100644 (file)
@@ -2277,14 +2277,10 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
 
             if( p_fmt->i_extra )
             {
-                void *p_tmp;
-                p_tmp =  realloc( es->fmt.p_extra, p_fmt->i_extra );
-                if( p_tmp )
-                {
-                    es->fmt.i_extra = p_fmt->i_extra;
-                    es->fmt.p_extra = p_tmp;
-                    memcpy( es->fmt.p_extra, p_fmt->p_extra, p_fmt->i_extra );
-                }
+                es->fmt.i_extra = p_fmt->i_extra;
+                es->fmt.p_extra = realloc( es->fmt.p_extra, p_fmt->i_extra );
+                memcpy( es->fmt.p_extra, p_fmt->p_extra, p_fmt->i_extra );
+
                 if( !es->p_dec )
                     return VLC_SUCCESS;
 #if 1
@@ -2292,14 +2288,11 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
 
                 EsCreateDecoder( out, es );
 #else
-                p_tmp = realloc( es->p_dec->fmt_in.p_extra, p_fmt->i_extra );
-                if( p_tmp )
-                {
-                    es->p_dec->fmt_in.i_extra = p_fmt->i_extra;
-                    es->p_dec->fmt_in.p_extra = p_tmp;
-                    memcpy( es->p_dec->fmt_in.p_extra,
-                            p_fmt->p_extra, p_fmt->i_extra );
-                }
+                es->p_dec->fmt_in.i_extra = p_fmt->i_extra;
+                es->p_dec->fmt_in.p_extra =
+                    realloc( es->p_dec->fmt_in.p_extra, p_fmt->i_extra );
+                memcpy( es->p_dec->fmt_in.p_extra,
+                        p_fmt->p_extra, p_fmt->i_extra );
 #endif
             }
 
index f90128a..cfb3065 100644 (file)
@@ -2913,23 +2913,19 @@ static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_atta
                               int i_new, input_attachment_t **pp_new )
 {
     int i_attachment = *pi_attachment;
-    input_attachment_t **attachment;
+    input_attachment_t **attachment = *ppp_attachment;
     int i;
 
-    attachment = realloc( *ppp_attachment,
+    attachment = realloc( attachment,
                           sizeof(input_attachment_t**) * ( i_attachment + i_new ) );
-    if( attachment )
-    {
-        for( i = 0; i < i_new; i++ )
-            attachment[i_attachment++] = pp_new[i];
-        free( pp_new );
+    for( i = 0; i < i_new; i++ )
+        attachment[i_attachment++] = pp_new[i];
+    free( pp_new );
 
-        /* */
-        *pi_attachment = i_attachment;
-        *ppp_attachment = attachment;
-    }
+    /* */
+    *pi_attachment = i_attachment;
+    *ppp_attachment = attachment;
 }
-
 /*****************************************************************************
  * InputGetExtraFiles
  *  Autodetect extra input list
index 1e1c102..23276e3 100644 (file)
@@ -796,14 +796,12 @@ static int AStreamPeekBlock( stream_t *s, const uint8_t **pp_peek, unsigned int
     /* We need to create a local copy */
     if( p_sys->i_peek < i_read )
     {
-        uint8_t *p_tmp;
-        p_tmp = realloc( p_sys->p_peek, i_read );
-        if( !p_tmp )
+        p_sys->p_peek = realloc( p_sys->p_peek, i_read );
+        if( !p_sys->p_peek )
         {
             p_sys->i_peek = 0;
             return 0;
         }
-        p_sys->p_peek = p_tmp;
         p_sys->i_peek = i_read;
     }
 
@@ -1172,15 +1170,13 @@ static int AStreamPeekStream( stream_t *s, const uint8_t **pp_peek, unsigned int
 
     if( p_sys->i_peek < i_read )
     {
-        uint8_t *p_tmp;
-        p_tmp = realloc( p_sys->p_peek, i_read );
-        if( !p_tmp )
+        p_sys->p_peek = realloc( p_sys->p_peek, i_read );
+        if( !p_sys->p_peek )
         {
             p_sys->i_peek = 0;
             return 0;
         }
         p_sys->i_peek = i_read;
-        p_sys->p_peek = p_tmp;
     }
 
     memcpy( p_sys->p_peek, &tk->p_buffer[i_off],
@@ -1591,12 +1587,10 @@ char *stream_ReadLine( stream_t *s )
 
         if( psz_eol )
         {
-            char *p_tmp;
             i_data = (psz_eol - (char *)p_data) + 1;
-            p_tmp = realloc( p_line, i_line + i_data + s->p_text->i_char_width ); /* add \0 */
-            if( !p_tmp )
+            p_line = realloc( p_line, i_line + i_data + s->p_text->i_char_width ); /* add \0 */
+            if( !p_line )
                 goto error;
-            p_line = p_tmp;
             i_data = stream_Read( s, &p_line[i_line], i_data );
             if( i_data <= 0 ) break; /* Hmmm */
             i_line += i_data - s->p_text->i_char_width; /* skip \n */;
@@ -1607,11 +1601,9 @@ char *stream_ReadLine( stream_t *s )
         }
 
         /* Read data (+1 for easy \0 append) */
-        char *p_tmp;
-        p_tmp = realloc( p_line, i_line + STREAM_PROBE_LINE + s->p_text->i_char_width );
-        if( !p_tmp )
+        p_line = realloc( p_line, i_line + STREAM_PROBE_LINE + s->p_text->i_char_width );
+        if( !p_line )
             goto error;
-        p_line = p_tmp;
         i_data = stream_Read( s, &p_line[i_line], STREAM_PROBE_LINE );
         if( i_data <= 0 ) break; /* Hmmm */
         i_line += i_data;
index c993ced..ba62608 100644 (file)
@@ -641,11 +641,7 @@ static int ExecuteScheduleProperty( vlm_t *p_vlm, vlm_schedule_sys_t *p_schedule
             psz_line = strdup( ppsz_property[i] );
             for( j = i+1; j < i_property; j++ )
             {
-                char *psz_tmp;
-                psz_tmp = realloc( psz_line, strlen(psz_line) + strlen(ppsz_property[j]) + 1 + 1 );
-                if( !psz_tmp )
-                    break;
-                psz_line = psz_tmp;
+                psz_line = realloc( psz_line, strlen(psz_line) + strlen(ppsz_property[j]) + 1 + 1 );
                 strcat( psz_line, " " );
                 strcat( psz_line, ppsz_property[j] );
             }
index 997a7bd..647bf9d 100644 (file)
@@ -142,7 +142,7 @@ static module_config_t *vlc_config_create (module_t *module, int type)
 
     if ((confsize & 0xf) == 0)
     {
-        tab = realloc (module->p_config, (confsize + 17) * sizeof (*tab));
+        tab = realloc (tab, (confsize + 17) * sizeof (*tab));
         if (tab == NULL)
             return NULL;
 
index 69d3666..c69cf70 100644 (file)
@@ -1217,11 +1217,8 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
             return 0;
 
         /* Add entry to cache */
-        module_cache_t *p_tmp;
-        p_tmp = realloc( p_bank->pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
-        if( !p_tmp )
-            return -1;
-        *p_bank->pp_cache = p_tmp;
+        p_bank->pp_cache =
+            realloc( p_bank->pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
         p_bank->pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) );
         if( !p_bank->pp_cache[p_bank->i_cache] )
             return -1;
index fba3217..c177781 100644 (file)
@@ -163,12 +163,11 @@ int ACL_AddNet( vlc_acl_t *p_acl, const char *psz_ip, int i_len,
 
     i_size = p_acl->i_size;
     p_ent = (vlc_acl_entry_t *)realloc( p_acl->p_entries,
-                                        (p_acl->i_size+1) * sizeof( *p_ent ) );
+                                        ++p_acl->i_size * sizeof( *p_ent ) );
 
     if( p_ent == NULL )
         return -1;
 
-    p_acl->i_size++;
     p_acl->p_entries = p_ent;
     p_ent += i_size;
 
index 39493bd..7bfc071 100644 (file)
@@ -561,14 +561,9 @@ httpd_HandlerCallBack( httpd_callback_sys_t *p_sys, httpd_client_t *cl,
 
         if( p != NULL )
         {
-            httpd_message_t *p_msg;
             p[4] = '\0';
-            p_msg = realloc( answer->p_body, strlen((char*)answer->p_body) + 1 );
-            if( p_msg )
-            {
-                answer->i_body = strlen((char*)answer->p_body) + 1;
-                answer->p_body = p_msg;
-            }
+            answer->i_body = strlen((char*)answer->p_body) + 1;
+            answer->p_body = realloc( answer->p_body, answer->i_body );
         }
     }
 
index 3134a5a..313e0e8 100644 (file)
@@ -507,15 +507,8 @@ char *__net_Gets( vlc_object_t *p_this, int fd, const v_socket_t *p_vs )
     {
         if( i_line == i_max )
         {
-            char *psz_tmp;
             i_max += 1024;
-            psz_tmp = realloc( psz_line, i_max );
-            if( !psz_tmp )
-            {
-                free( psz_line );
-                return NULL;
-            }
-            psz_line = psz_tmp;
+            psz_line = realloc( psz_line, i_max );
             ptr = psz_line + i_line;
         }
 
index c9cf8aa..c9384b4 100644 (file)
@@ -278,17 +278,15 @@ static int DownloadArt( playlist_fetcher_t *p_fetcher, input_item_t *p_item )
     int i_data = 0;
     for( ;; )
     {
-        uint8_t *p_tmp;
         int i_read = 65536;
 
         if( i_data >= INT_MAX - i_read )
             break;
 
-        p_tmp = realloc( p_data, i_data + i_read );
-        if( !p_tmp )
+        p_data = realloc( p_data, i_data + i_read );
+        if( !p_data )
             break;
 
-        p_data = p_tmp;
         i_read = stream_Read( p_stream, &p_data[i_data], i_read );
         if( i_read <= 0 )
             break;
index 4a2da5c..9c6d931 100644 (file)
@@ -699,16 +699,11 @@ char *str_format_time( const char *tformat )
 #define INSERT_STRING( string )                                     \
                     if( string != NULL )                            \
                     {                                               \
-                        char *tmp;                                  \
                         int len = strlen( string );                 \
-                        tmp = realloc( dst, i_size = i_size + len );\
-                        if( tmp )                                   \
-                        {                                           \
-                            dst = tmp;                              \
-                            memcpy( (dst+d), string, len );         \
-                            d += len;                               \
-                            free( string );                         \
-                        }                                           \
+                        dst = realloc( dst, i_size = i_size + len );\
+                        memcpy( (dst+d), string, len );             \
+                        d += len;                                   \
+                        free( string );                             \
                     }                                               \
                     else if( !b_empty_if_na )                       \
                     {                                               \
@@ -719,15 +714,10 @@ char *str_format_time( const char *tformat )
 /* same than INSERT_STRING, except that string won't be freed */
 #define INSERT_STRING_NO_FREE( string )                             \
                     {                                               \
-                        char *tmp;                                  \
                         int len = strlen( string );                 \
-                        tmp = realloc( dst, i_size = i_size + len );\
-                        if( tmp )                                   \
-                        {                                           \
-                            dst = tmp;                              \
-                            memcpy( dst+d, string, len );           \
-                            d += len;                               \
-                        }                                           \
+                        dst = realloc( dst, i_size = i_size + len );\
+                        memcpy( dst+d, string, len );               \
+                        d += len;                                   \
                     }
 char *__str_format_meta( vlc_object_t *p_object, const char *string )
 {