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
**************************************************************************/
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;
}
/**************************************************************************
......
......@@ -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
......
......@@ -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
}
......
......@@ -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
......
......@@ -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;
......
......@@ -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] );
}
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 );
}
}
......
......@@ -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;
}
......
......@@ -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;
......
......@@ -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 )
{
......
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