summaryrefslogtreecommitdiff
path: root/usr/src/lib/libzfs/common/libzfs_sendrecv.c
diff options
context:
space:
mode:
authorPrabahar Jeyaram <Prabahar.Jeyaram@Sun.COM>2009-08-12 22:17:19 -0700
committerPrabahar Jeyaram <Prabahar.Jeyaram@Sun.COM>2009-08-12 22:17:19 -0700
commitfb2d63c679a8fe914fa259a9bfab8ed1f6597fba (patch)
tree3ca90ecf32dbcbfc3c85808a04d97964c24ea627 /usr/src/lib/libzfs/common/libzfs_sendrecv.c
parent503ad85c168c7992ccc310af845a581cff3c72b5 (diff)
downloadillumos-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.c6
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];