diff options
author | pjd <pjd@FreeBSD.org> | 2013-11-25 20:45:30 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2013-11-25 20:45:30 +0000 |
commit | 1c22c1352a68318712aa7e8d0d688fa1a558af3c (patch) | |
tree | c214255caa7096083237e195f0f759fc0e4e28e8 | |
parent | 648f0dc2b110707bda10038f5dcbb1de4f7c00cc (diff) | |
download | FreeBSD-src-1c22c1352a68318712aa7e8d0d688fa1a558af3c.zip FreeBSD-src-1c22c1352a68318712aa7e8d0d688fa1a558af3c.tar.gz |
Fix double free().
Reported by: Coverity
Coverity CID: 1130048
-rw-r--r-- | lib/libnv/nvpair.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/libnv/nvpair.c b/lib/libnv/nvpair.c index a6a2a00..916444f 100644 --- a/lib/libnv/nvpair.c +++ b/lib/libnv/nvpair.c @@ -683,10 +683,8 @@ nvpair_unpack(int flags, const unsigned char *ptr, size_t *leftp, if (ptr == NULL) goto failed; tmp = realloc(nvp, sizeof(*nvp) + strlen(nvp->nvp_name) + 1); - if (tmp == NULL) { - free(nvp); + if (tmp == NULL) goto failed; - } nvp = tmp; /* Update nvp_name after realloc(). */ nvp->nvp_name = (char *)(nvp + 1); |