Author: imp
Date: Fri Jan  5 07:09:24 2018
New Revision: 327574
URL: https://svnweb.freebsd.org/changeset/base/327574

Log:
  Set dp to NULL when we free it, and tree a NULL dp as an error
  condition. This should prevent a double free. In addition, prevent a
  leak by freeing dp each loop and when we're done.
  
  CID: 1383577
  Sponsored by: Netflix

Modified:
  head/lib/libefivar/efivar-dp-xlate.c
  head/usr.sbin/efidp/efidp.c

Modified: head/lib/libefivar/efivar-dp-xlate.c
==============================================================================
--- head/lib/libefivar/efivar-dp-xlate.c        Fri Jan  5 07:09:19 2018        
(r327573)
+++ head/lib/libefivar/efivar-dp-xlate.c        Fri Jan  5 07:09:24 2018        
(r327574)
@@ -663,6 +663,7 @@ errout:
        free(rp);
        if (rv != 0) {
                free(*dp);
+               *dp = NULL;
        }
        return (rv);
 }

Modified: head/usr.sbin/efidp/efidp.c
==============================================================================
--- head/usr.sbin/efidp/efidp.c Fri Jan  5 07:09:19 2018        (r327573)
+++ head/usr.sbin/efidp/efidp.c Fri Jan  5 07:09:24 2018        (r327574)
@@ -143,10 +143,13 @@ unix_to_efi(void)
        char *walker;
        int rv;
 
+       dp = NULL;
        while (fgets(buffer, sizeof(buffer), stdin)) {
                walker= trim(buffer);
+               free(dp);
+               dp = NULL;
                rv = efivar_unix_path_to_device_path(walker, &dp);
-               if (rv != 0) {
+               if (rv != 0 || dp == NULL) {
                        errno = rv;
                        warn("Can't convert '%s' to efi", walker);
                        continue;
@@ -158,6 +161,7 @@ unix_to_efi(void)
                }
                printf("%s\n", efi);
        }
+       free(dp);
 }
 
 static void
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to