]> git.proxmox.com Git - mirror_zfs.git/blobdiff - lib/libzfs/libzfs_sendrecv.c
Handle possible null pointers from malloc/strdup/strndup()
[mirror_zfs.git] / lib / libzfs / libzfs_sendrecv.c
index d63a9e1a4e0ac779ae453066e7495e74a06d1dc2..bf93ac9bac187187904ab6125ad9a93a5031d240 100644 (file)
@@ -4387,7 +4387,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
                         * prepend a path separator.
                         */
                        int len = strlen(drrb->drr_toname);
-                       cp = malloc(len + 2);
+                       cp = umem_alloc(len + 2, UMEM_NOFAIL);
                        cp[0] = '/';
                        (void) strcpy(&cp[1], drrb->drr_toname);
                        chopprefix = cp;
@@ -4440,7 +4440,8 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
         */
        (void) strlcpy(destsnap, tosnap, sizeof (destsnap));
        (void) strlcat(destsnap, chopprefix, sizeof (destsnap));
-       free(cp);
+       if (cp != NULL)
+               umem_free(cp, strlen(cp) + 1);
        if (!zfs_name_valid(destsnap, ZFS_TYPE_SNAPSHOT)) {
                err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf);
                goto out;