Author: asomers
Date: Tue May 30 22:33:24 2017
New Revision: 319258
URL: https://svnweb.freebsd.org/changeset/base/319258

Log:
  MFC r316535:
  
  Fix memory leak in "gpart bootcode"
  
  Also, annotate that gpart_issue never returns
  
  Reported by:  Coverity
  CID:          1007105
  Sponsored by: Spectra Logic Corp

Modified:
  stable/10/sbin/geom/class/part/geom_part.c
  stable/10/sbin/geom/misc/subr.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sbin/geom/class/part/geom_part.c
==============================================================================
--- stable/10/sbin/geom/class/part/geom_part.c  Tue May 30 22:02:55 2017        
(r319257)
+++ stable/10/sbin/geom/class/part/geom_part.c  Tue May 30 22:33:24 2017        
(r319258)
@@ -81,7 +81,7 @@ static int gpart_autofill(struct gctl_req *);
 static int gpart_autofill_resize(struct gctl_req *);
 static void gpart_bootcode(struct gctl_req *, unsigned int);
 static void *gpart_bootfile_read(const char *, ssize_t *);
-static void gpart_issue(struct gctl_req *, unsigned int);
+static _Noreturn void gpart_issue(struct gctl_req *, unsigned int);
 static void gpart_show(struct gctl_req *, unsigned int);
 static void gpart_show_geom(struct ggeom *, const char *, int);
 static int gpart_show_hasopt(struct gctl_req *, const char *, const char *);
@@ -1259,6 +1259,7 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl)
                gpart_issue(req, fl);
 
        geom_deletetree(&mesh);
+       free(partcode);
 }
 
 static void
@@ -1279,7 +1280,7 @@ gpart_print_error(const char *errstr)
                warnx("%s", errmsg);
 }
 
-static void
+static _Noreturn void
 gpart_issue(struct gctl_req *req, unsigned int fl __unused)
 {
        char buf[4096];

Modified: stable/10/sbin/geom/misc/subr.c
==============================================================================
--- stable/10/sbin/geom/misc/subr.c     Tue May 30 22:02:55 2017        
(r319257)
+++ stable/10/sbin/geom/misc/subr.c     Tue May 30 22:33:24 2017        
(r319258)
@@ -336,7 +336,7 @@ g_metadata_clear(const char *name, const char *magic)
                goto out;
        }
        sectorsize = g_sectorsize(fd);
-       if (sectorsize == 0) {
+       if (sectorsize <= 0) {
                error = errno;
                goto out;
        }
@@ -365,8 +365,7 @@ g_metadata_clear(const char *name, const char *magic)
        }
        (void)g_flush(fd);
 out:
-       if (sector != NULL)
-               free(sector);
+       free(sector);
        g_close(fd);
        return (error);
 }
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to