diff options
author | Prabahar Jeyaram <Prabahar.Jeyaram@Sun.COM> | 2009-08-12 22:17:19 -0700 |
---|---|---|
committer | Prabahar Jeyaram <Prabahar.Jeyaram@Sun.COM> | 2009-08-12 22:17:19 -0700 |
commit | fb2d63c679a8fe914fa259a9bfab8ed1f6597fba (patch) | |
tree | 3ca90ecf32dbcbfc3c85808a04d97964c24ea627 /usr/src/lib/libzfs/common/libzfs_sendrecv.c | |
parent | 503ad85c168c7992ccc310af845a581cff3c72b5 (diff) | |
download | illumos-joyent-fb2d63c679a8fe914fa259a9bfab8ed1f6597fba.tar.gz |
6696858 zfs receive of incremental replication stream can dereference NULL pointer and crash
Diffstat (limited to 'usr/src/lib/libzfs/common/libzfs_sendrecv.c')
-rw-r--r-- | usr/src/lib/libzfs/common/libzfs_sendrecv.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/usr/src/lib/libzfs/common/libzfs_sendrecv.c b/usr/src/lib/libzfs/common/libzfs_sendrecv.c index 1ffb6294cf..706bd13919 100644 --- a/usr/src/lib/libzfs/common/libzfs_sendrecv.c +++ b/usr/src/lib/libzfs/common/libzfs_sendrecv.c @@ -1139,6 +1139,7 @@ recv_incremental_replication(libzfs_handle_t *hdl, const char *tofs, char newname[ZFS_MAXNAMELEN]; int error; boolean_t needagain, progress; + char *s1, *s2; VERIFY(0 == nvlist_lookup_string(stream_nv, "fromsnap", &fromsnap)); VERIFY(0 == nvlist_lookup_string(stream_nv, "tosnap", &tosnap)); @@ -1336,8 +1337,9 @@ again: /* check for rename */ if ((stream_parent_fromsnap_guid != 0 && stream_parent_fromsnap_guid != parent_fromsnap_guid) || - strcmp(strrchr(fsname, '/'), - strrchr(stream_fsname, '/')) != 0) { + ((s1 = strrchr(fsname, '/')) && + (s2 = strrchr(stream_fsname, '/')) && + strcmp(s1, s2) != 0)) { nvlist_t *parent; char tryname[ZFS_MAXNAMELEN]; |