I think this is better?

Index: magic-test.c
===================================================================
RCS file: /cvs/src/usr.bin/file/magic-test.c,v
retrieving revision 1.25
diff -u -p -r1.25 magic-test.c
--- magic-test.c        18 Apr 2017 14:16:48 -0000      1.25
+++ magic-test.c        14 Jun 2018 07:16:41 -0000
@@ -1404,10 +1404,10 @@ magic_test(struct magic *m, const void *
        if (*ms.out != '\0') {
                if (flags & MAGIC_TEST_MIME) {
                        if (ms.mimetype != NULL)
-                               return (xstrdup(ms.mimetype));
+                               return (ms.mimetype);
                        return (NULL);
                }
-               return (xstrdup(ms.out));
+               return (ms.out);
        }
        return (NULL);
 }



On Wed, Jun 13, 2018 at 11:00:58PM -0400, Bryan Steele wrote:
> magic_test returns a xstrdup'd string, which was then being xstrdup'd
> again without freeing the original copy (leaking memory).
> 
> casts added to avoid clang warning
>       warning: assigning to 'char *' from 'const char *' discards qualifiers
>       [-Wincompatible-pointer-types-discards-qualifiers]
>                 inf->result = s;
> 
> ok?
> 
> -Bryan.
> 
> Index: file/file.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/file/file.c,v
> retrieving revision 1.66
> diff -u -p -u -r1.66 file.c
> --- file/file.c       15 Jan 2018 19:45:51 -0000      1.66
> +++ file/file.c       14 Jun 2018 02:55:32 -0000
> @@ -603,7 +603,7 @@ try_text(struct input_file *inf)
>  
>       s = magic_test(inf->m, inf->base, inf->size, flags);
>       if (s != NULL) {
> -             inf->result = xstrdup(s);
> +             inf->result = (char *)s;
>               return (1);
>       }
>  
> @@ -635,7 +635,7 @@ try_magic(struct input_file *inf)
>  
>       s = magic_test(inf->m, inf->base, inf->size, flags);
>       if (s != NULL) {
> -             inf->result = xstrdup(s);
> +             inf->result = (char *)s;
>               return (1);
>       }
>       return (0);
> 

Reply via email to