diff options
| author | Matthew Ahrens <mahrens@delphix.com> | 2015-10-09 10:55:12 -0700 |
|---|---|---|
| committer | Matthew Ahrens <mahrens@delphix.com> | 2015-10-09 10:55:12 -0700 |
| commit | 3f84190c280ddf5917fb4682f34fdaa328ee195c (patch) | |
| tree | 0525ee759ab3fc17e66d2366c7de6bc69bafa059 /usr/src | |
| parent | 6de9bb5603e65b16816b7ab29e39bac820e2da2b (diff) | |
| download | illumos-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.c | 6 |
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++) { |
