Re: [PATCH 1/2] libmpdemux/mf: Replace sprintf by mp_asprintf
Alexander Strasser <[email protected]> Wed, 12 May 2021 21:34:41 +0200
| Newsgroups | gmane.comp.video.mplayer.devel |
|---|---|
| Message-ID | <[email protected]> |
On 2021-04-27 09:15 +0200, Alexander Strasser wrote: > It's not a good idea to use sprintf. Especially in this case where > the format string is supplied by the user. > > Signed-off-by: Alexander Strasser <[email protected]> > --- > libmpdemux/mf.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/libmpdemux/mf.c b/libmpdemux/mf.c > index 7cdd533d7..31401952e 100644 > --- a/libmpdemux/mf.c > +++ b/libmpdemux/mf.c > @@ -37,6 +37,7 @@ > #include "mp_msg.h" > #include "help_mp.h" > #include "stream/stream.h" > +#include "mp_strings.h" > > #include "mf.h" > > @@ -110,10 +111,10 @@ mf_t* open_mf(char * filename){ > goto exit_mf; > } > > - fname=malloc( strlen( filename ) + 32 ); > - > if ( !strchr( filename,'%' ) ) > { > + fname=malloc( strlen( filename ) + 32 ); > + > strcpy( fname,filename ); > if ( !strchr( filename,'*' ) ) strcat( fname,"*" ); > > @@ -142,19 +143,23 @@ mf_t* open_mf(char * filename){ > > while ( error_count < 5 ) > { > - sprintf( fname,filename,count++ ); > + fname = mp_asprintf( filename,count++ ); > + > if ( stat( fname,&fs ) ) > { > + free(fname); > error_count++; > mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname ); Commenting on my patch: This free needs to go after the mp_msg. Alexander > } > else > { > mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) ); > - mf->names[mf->nr_of_files]=strdup( fname ); > + mf->names[mf->nr_of_files]=fname; > // mp_msg( MSGT_STREAM,MSGL_V,"[mf] added file %d.: %s\n",mf->nr_of_files,mf->names[mf->nr_of_files] ); > mf->nr_of_files++; > } > + > + fname = NULL; > } > > mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files ); > --