Print this page
5847 libzfs_diff should check zfs_prop_get() return

@@ -19,10 +19,11 @@
  * CDDL HEADER END
  */
 
 /*
  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
  */
 
 /*
  * zfs diff support
  */

@@ -614,13 +615,16 @@
                 (void) strncpy(di->ds, tosnap, tdslen);
                 di->ds[tdslen] = '\0';
 
                 zhp = zfs_open(hdl, di->ds, ZFS_TYPE_FILESYSTEM);
                 while (zhp != NULL) {
-                        (void) zfs_prop_get(zhp, ZFS_PROP_ORIGIN,
-                            origin, sizeof (origin), &src, NULL, 0, B_FALSE);
-
+                        if (zfs_prop_get(zhp, ZFS_PROP_ORIGIN, origin,
+                            sizeof (origin), &src, NULL, 0, B_FALSE) != 0) {
+                                (void) zfs_close(zhp);
+                                zhp = NULL;
+                                break;
+                        }
                         if (strncmp(origin, fromsnap, fsnlen) == 0)
                                 break;
 
                         (void) zfs_close(zhp);
                         zhp = zfs_open(hdl, origin, ZFS_TYPE_FILESYSTEM);