Commit 30ceb37f authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Revert "correct realloc() usage, on failure realloc will return NULL"

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 ec5d8611.
parent 2fb0517e
...@@ -61,15 +61,10 @@ static inline int libvlc_media_list_path_deepness( libvlc_media_list_path_t path ...@@ -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 ) 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 ); int old_deepness = libvlc_media_list_path_deepness( *p_path );
*p_tmp = realloc( *p_path, sizeof(int)*(old_deepness+2)); *p_path = realloc( *p_path, sizeof(int)*(old_deepness+2));
if( *p_tmp )
{
*p_tmp = *p_path;
*p_path[old_deepness] = index; *p_path[old_deepness] = index;
*p_path[old_deepness+1] = -1; *p_path[old_deepness+1] = -1;
}
} }
/************************************************************************** /**************************************************************************
......
...@@ -571,9 +571,7 @@ int __vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv, ...@@ -571,9 +571,7 @@ int __vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv,
|| i_read == 0 ) || i_read == 0 )
break; break;
*pi_data += i_read; *pi_data += i_read;
char *p_tmp = realloc( *pp_data, *pi_data + 1025 ); *pp_data = realloc( *pp_data, *pi_data + 1025 );
if( p_tmp )
*pp_data = p_tmp;
} }
while ( !p_object->b_die while ( !p_object->b_die
......
...@@ -2276,15 +2276,11 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args ) ...@@ -2276,15 +2276,11 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
return VLC_EGENERIC; return VLC_EGENERIC;
if( p_fmt->i_extra ) 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.i_extra = p_fmt->i_extra;
es->fmt.p_extra = p_tmp; 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 ); memcpy( es->fmt.p_extra, p_fmt->p_extra, p_fmt->i_extra );
}
if( !es->p_dec ) if( !es->p_dec )
return VLC_SUCCESS; return VLC_SUCCESS;
#if 1 #if 1
...@@ -2292,14 +2288,11 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args ) ...@@ -2292,14 +2288,11 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
EsCreateDecoder( out, es ); EsCreateDecoder( out, es );
#else #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.i_extra = p_fmt->i_extra;
es->p_dec->fmt_in.p_extra = p_tmp; 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, memcpy( es->p_dec->fmt_in.p_extra,
p_fmt->p_extra, p_fmt->i_extra ); p_fmt->p_extra, p_fmt->i_extra );
}
#endif #endif
} }
......
...@@ -2913,13 +2913,11 @@ static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_atta ...@@ -2913,13 +2913,11 @@ static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_atta
int i_new, input_attachment_t **pp_new ) int i_new, input_attachment_t **pp_new )
{ {
int i_attachment = *pi_attachment; int i_attachment = *pi_attachment;
input_attachment_t **attachment; input_attachment_t **attachment = *ppp_attachment;
int i; int i;
attachment = realloc( *ppp_attachment, attachment = realloc( attachment,
sizeof(input_attachment_t**) * ( i_attachment + i_new ) ); sizeof(input_attachment_t**) * ( i_attachment + i_new ) );
if( attachment )
{
for( i = 0; i < i_new; i++ ) for( i = 0; i < i_new; i++ )
attachment[i_attachment++] = pp_new[i]; attachment[i_attachment++] = pp_new[i];
free( pp_new ); free( pp_new );
...@@ -2927,9 +2925,7 @@ static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_atta ...@@ -2927,9 +2925,7 @@ static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_atta
/* */ /* */
*pi_attachment = i_attachment; *pi_attachment = i_attachment;
*ppp_attachment = attachment; *ppp_attachment = attachment;
}
} }
/***************************************************************************** /*****************************************************************************
* InputGetExtraFiles * InputGetExtraFiles
* Autodetect extra input list * Autodetect extra input list
......
...@@ -796,14 +796,12 @@ static int AStreamPeekBlock( stream_t *s, const uint8_t **pp_peek, unsigned int ...@@ -796,14 +796,12 @@ static int AStreamPeekBlock( stream_t *s, const uint8_t **pp_peek, unsigned int
/* We need to create a local copy */ /* We need to create a local copy */
if( p_sys->i_peek < i_read ) if( p_sys->i_peek < i_read )
{ {
uint8_t *p_tmp; p_sys->p_peek = realloc( p_sys->p_peek, i_read );
p_tmp = realloc( p_sys->p_peek, i_read ); if( !p_sys->p_peek )
if( !p_tmp )
{ {
p_sys->i_peek = 0; p_sys->i_peek = 0;
return 0; return 0;
} }
p_sys->p_peek = p_tmp;
p_sys->i_peek = i_read; p_sys->i_peek = i_read;
} }
...@@ -1172,15 +1170,13 @@ static int AStreamPeekStream( stream_t *s, const uint8_t **pp_peek, unsigned int ...@@ -1172,15 +1170,13 @@ static int AStreamPeekStream( stream_t *s, const uint8_t **pp_peek, unsigned int
if( p_sys->i_peek < i_read ) if( p_sys->i_peek < i_read )
{ {
uint8_t *p_tmp; p_sys->p_peek = realloc( p_sys->p_peek, i_read );
p_tmp = realloc( p_sys->p_peek, i_read ); if( !p_sys->p_peek )
if( !p_tmp )
{ {
p_sys->i_peek = 0; p_sys->i_peek = 0;
return 0; return 0;
} }
p_sys->i_peek = i_read; p_sys->i_peek = i_read;
p_sys->p_peek = p_tmp;
} }
memcpy( p_sys->p_peek, &tk->p_buffer[i_off], memcpy( p_sys->p_peek, &tk->p_buffer[i_off],
...@@ -1591,12 +1587,10 @@ char *stream_ReadLine( stream_t *s ) ...@@ -1591,12 +1587,10 @@ char *stream_ReadLine( stream_t *s )
if( psz_eol ) if( psz_eol )
{ {
char *p_tmp;
i_data = (psz_eol - (char *)p_data) + 1; 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 */ p_line = realloc( p_line, i_line + i_data + s->p_text->i_char_width ); /* add \0 */
if( !p_tmp ) if( !p_line )
goto error; goto error;
p_line = p_tmp;
i_data = stream_Read( s, &p_line[i_line], i_data ); i_data = stream_Read( s, &p_line[i_line], i_data );
if( i_data <= 0 ) break; /* Hmmm */ if( i_data <= 0 ) break; /* Hmmm */
i_line += i_data - s->p_text->i_char_width; /* skip \n */; i_line += i_data - s->p_text->i_char_width; /* skip \n */;
...@@ -1607,11 +1601,9 @@ char *stream_ReadLine( stream_t *s ) ...@@ -1607,11 +1601,9 @@ char *stream_ReadLine( stream_t *s )
} }
/* Read data (+1 for easy \0 append) */ /* Read data (+1 for easy \0 append) */
char *p_tmp; p_line = realloc( p_line, i_line + STREAM_PROBE_LINE + s->p_text->i_char_width );
p_tmp = realloc( p_line, i_line + STREAM_PROBE_LINE + s->p_text->i_char_width ); if( !p_line )
if( !p_tmp )
goto error; goto error;
p_line = p_tmp;
i_data = stream_Read( s, &p_line[i_line], STREAM_PROBE_LINE ); i_data = stream_Read( s, &p_line[i_line], STREAM_PROBE_LINE );
if( i_data <= 0 ) break; /* Hmmm */ if( i_data <= 0 ) break; /* Hmmm */
i_line += i_data; i_line += i_data;
......
...@@ -641,11 +641,7 @@ static int ExecuteScheduleProperty( vlm_t *p_vlm, vlm_schedule_sys_t *p_schedule ...@@ -641,11 +641,7 @@ static int ExecuteScheduleProperty( vlm_t *p_vlm, vlm_schedule_sys_t *p_schedule
psz_line = strdup( ppsz_property[i] ); psz_line = strdup( ppsz_property[i] );
for( j = i+1; j < i_property; j++ ) for( j = i+1; j < i_property; j++ )
{ {
char *psz_tmp; psz_line = realloc( psz_line, strlen(psz_line) + strlen(ppsz_property[j]) + 1 + 1 );
psz_tmp = realloc( psz_line, strlen(psz_line) + strlen(ppsz_property[j]) + 1 + 1 );
if( !psz_tmp )
break;
psz_line = psz_tmp;
strcat( psz_line, " " ); strcat( psz_line, " " );
strcat( psz_line, ppsz_property[j] ); strcat( psz_line, ppsz_property[j] );
} }
......
...@@ -142,7 +142,7 @@ static module_config_t *vlc_config_create (module_t *module, int type) ...@@ -142,7 +142,7 @@ static module_config_t *vlc_config_create (module_t *module, int type)
if ((confsize & 0xf) == 0) if ((confsize & 0xf) == 0)
{ {
tab = realloc (module->p_config, (confsize + 17) * sizeof (*tab)); tab = realloc (tab, (confsize + 17) * sizeof (*tab));
if (tab == NULL) if (tab == NULL)
return NULL; return NULL;
......
...@@ -1217,11 +1217,8 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank, ...@@ -1217,11 +1217,8 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
return 0; return 0;
/* Add entry to cache */ /* Add entry to cache */
module_cache_t *p_tmp; p_bank->pp_cache =
p_tmp = realloc( p_bank->pp_cache, (p_bank->i_cache + 1) * sizeof(void *) ); 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[p_bank->i_cache] = malloc( sizeof(module_cache_t) ); p_bank->pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) );
if( !p_bank->pp_cache[p_bank->i_cache] ) if( !p_bank->pp_cache[p_bank->i_cache] )
return -1; return -1;
......
...@@ -163,12 +163,11 @@ int ACL_AddNet( vlc_acl_t *p_acl, const char *psz_ip, int i_len, ...@@ -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; i_size = p_acl->i_size;
p_ent = (vlc_acl_entry_t *)realloc( p_acl->p_entries, 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 ) if( p_ent == NULL )
return -1; return -1;
p_acl->i_size++;
p_acl->p_entries = p_ent; p_acl->p_entries = p_ent;
p_ent += i_size; p_ent += i_size;
......
...@@ -561,14 +561,9 @@ httpd_HandlerCallBack( httpd_callback_sys_t *p_sys, httpd_client_t *cl, ...@@ -561,14 +561,9 @@ httpd_HandlerCallBack( httpd_callback_sys_t *p_sys, httpd_client_t *cl,
if( p != NULL ) if( p != NULL )
{ {
httpd_message_t *p_msg;
p[4] = '\0'; 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->i_body = strlen((char*)answer->p_body) + 1;
answer->p_body = p_msg; answer->p_body = realloc( answer->p_body, answer->i_body );
}
} }
} }
......
...@@ -507,15 +507,8 @@ char *__net_Gets( vlc_object_t *p_this, int fd, const v_socket_t *p_vs ) ...@@ -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 ) if( i_line == i_max )
{ {
char *psz_tmp;
i_max += 1024; i_max += 1024;
psz_tmp = realloc( psz_line, i_max ); psz_line = realloc( psz_line, i_max );
if( !psz_tmp )
{
free( psz_line );
return NULL;
}
psz_line = psz_tmp;
ptr = psz_line + i_line; ptr = psz_line + i_line;
} }
......
...@@ -278,17 +278,15 @@ static int DownloadArt( playlist_fetcher_t *p_fetcher, input_item_t *p_item ) ...@@ -278,17 +278,15 @@ static int DownloadArt( playlist_fetcher_t *p_fetcher, input_item_t *p_item )
int i_data = 0; int i_data = 0;
for( ;; ) for( ;; )
{ {
uint8_t *p_tmp;
int i_read = 65536; int i_read = 65536;
if( i_data >= INT_MAX - i_read ) if( i_data >= INT_MAX - i_read )
break; break;
p_tmp = realloc( p_data, i_data + i_read ); p_data = realloc( p_data, i_data + i_read );
if( !p_tmp ) if( !p_data )
break; break;
p_data = p_tmp;
i_read = stream_Read( p_stream, &p_data[i_data], i_read ); i_read = stream_Read( p_stream, &p_data[i_data], i_read );
if( i_read <= 0 ) if( i_read <= 0 )
break; break;
......
...@@ -699,17 +699,12 @@ char *str_format_time( const char *tformat ) ...@@ -699,17 +699,12 @@ char *str_format_time( const char *tformat )
#define INSERT_STRING( string ) \ #define INSERT_STRING( string ) \
if( string != NULL ) \ if( string != NULL ) \
{ \ { \
char *tmp; \
int len = strlen( string ); \ int len = strlen( string ); \
tmp = realloc( dst, i_size = i_size + len );\ dst = realloc( dst, i_size = i_size + len );\
if( tmp ) \
{ \
dst = tmp; \
memcpy( (dst+d), string, len ); \ memcpy( (dst+d), string, len ); \
d += len; \ d += len; \
free( string ); \ free( string ); \
} \ } \
} \
else if( !b_empty_if_na ) \ else if( !b_empty_if_na ) \
{ \ { \
*(dst+d) = '-'; \ *(dst+d) = '-'; \
...@@ -719,15 +714,10 @@ char *str_format_time( const char *tformat ) ...@@ -719,15 +714,10 @@ char *str_format_time( const char *tformat )
/* same than INSERT_STRING, except that string won't be freed */ /* same than INSERT_STRING, except that string won't be freed */
#define INSERT_STRING_NO_FREE( string ) \ #define INSERT_STRING_NO_FREE( string ) \
{ \ { \
char *tmp; \
int len = strlen( string ); \ int len = strlen( string ); \
tmp = realloc( dst, i_size = i_size + len );\ dst = realloc( dst, i_size = i_size + len );\
if( tmp ) \
{ \
dst = tmp; \
memcpy( dst+d, string, len ); \ memcpy( dst+d, string, len ); \
d += len; \ d += len; \
} \
} }
char *__str_format_meta( vlc_object_t *p_object, const char *string ) char *__str_format_meta( vlc_object_t *p_object, const char *string )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment