summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorMatthew Ahrens <mahrens@delphix.com>2015-10-09 10:55:12 -0700
committerMatthew Ahrens <mahrens@delphix.com>2015-10-09 10:55:12 -0700
commit3f84190c280ddf5917fb4682f34fdaa328ee195c (patch)
tree0525ee759ab3fc17e66d2366c7de6bc69bafa059 /usr/src
parent6de9bb5603e65b16816b7ab29e39bac820e2da2b (diff)
downloadillumos-gate-3f84190c280ddf5917fb4682f34fdaa328ee195c.tar.gz
6290 zdb -h overflows stack
Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Brian Donohue <brian.donohue@delphix.com> Reviewed by: Xin Li <delphij@freebsd.org> Reviewed by: Don Brady <dev.fs.zfs@gmail.com> Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/zdb/zdb.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/usr/src/cmd/zdb/zdb.c b/usr/src/cmd/zdb/zdb.c
index 6bed2ff2f9..7c3ac73706 100644
--- a/usr/src/cmd/zdb/zdb.c
+++ b/usr/src/cmd/zdb/zdb.c
@@ -1056,7 +1056,6 @@ static void
dump_history(spa_t *spa)
{
nvlist_t **events = NULL;
- char buf[SPA_MAXBLOCKSIZE];
uint64_t resid, len, off = 0;
uint_t num = 0;
int error;
@@ -1065,12 +1064,14 @@ dump_history(spa_t *spa)
char tbuf[30];
char internalstr[MAXPATHLEN];
+ char *buf = umem_alloc(SPA_MAXBLOCKSIZE, UMEM_NOFAIL);
do {
- len = sizeof (buf);
+ len = SPA_MAXBLOCKSIZE;
if ((error = spa_history_get(spa, &off, &len, buf)) != 0) {
(void) fprintf(stderr, "Unable to read history: "
"error %d\n", error);
+ umem_free(buf, SPA_MAXBLOCKSIZE);
return;
}
@@ -1079,6 +1080,7 @@ dump_history(spa_t *spa)
off -= resid;
} while (len != 0);
+ umem_free(buf, SPA_MAXBLOCKSIZE);
(void) printf("\nHistory:\n");
for (int i = 0; i < num; i++) {