[MPlayer-dev-eng] [PATCH 1/2] libmpdemux/mf: Replace sprintf by mp_asprintf

Alexander Strasser eclipse7 at gmx.net
Wed May 12 22:34:41 EEST 2021


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 <eclipse7 at gmx.net>
> ---
>  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 );
> --


More information about the MPlayer-dev-eng mailing list