Cristian Rodríguez wrote:

> strlen() returns the length excluding the terminating null byte..then
> an string of len 4 will be off-by-one in application_id[4];
> 
> GCC 4.7 detects this bug.

Ah nice!

> diff --git a/src/metaflac/options.c b/src/metaflac/options.c
> index eb3498d..2cb0959 100644
> --- a/src/metaflac/options.c
> +++ b/src/metaflac/options.c
> @@ -1040,7 +1040,7 @@ FLAC__bool parse_block_type(const char *in, 
> Argument_BlockType *out)
>                       out->entries[entry].type = 
> FLAC__METADATA_TYPE_APPLICATION;
>                       out->entries[entry].filter_application_by_id = (0 != r);
>                       if(0 != r) {
> -                             if(strlen(r) == 4) {
> +                             if(strlen(r) == 3) {
>                                       
> strcpy(out->entries[entry].application_id, r);
>                               }


I actually think that this is a better solution:

                                if(strlen(r) == 4) {
-                                       
strcpy(out->entries[entry].application_id, r);
+                                       
memcpy(out->entries[entry].application_id, r, 4);
                                }


Cheers,
Erik
-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/
_______________________________________________
flac-dev mailing list
flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev

Reply via email to