Fix zdb -E segfault
SPA_MAXBLOCKSIZE is too large for stack. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: loli10K <ezomori.nozomu@gmail.com> Signed-off-by: Chunwei Chen <david.chen@nutanix.com> Closes #7099
This commit is contained in:
parent
18c662b845
commit
31ff122aa2
|
@ -4139,11 +4139,12 @@ zdb_embedded_block(char *thing)
|
|||
{
|
||||
blkptr_t bp;
|
||||
unsigned long long *words = (void *)&bp;
|
||||
char buf[SPA_MAXBLOCKSIZE];
|
||||
char *buf;
|
||||
int err;
|
||||
|
||||
memset(&bp, 0, sizeof (blkptr_t));
|
||||
buf = umem_alloc(SPA_MAXBLOCKSIZE, UMEM_NOFAIL);
|
||||
|
||||
bzero(&bp, sizeof (bp));
|
||||
err = sscanf(thing, "%llx:%llx:%llx:%llx:%llx:%llx:%llx:%llx:"
|
||||
"%llx:%llx:%llx:%llx:%llx:%llx:%llx:%llx",
|
||||
words + 0, words + 1, words + 2, words + 3,
|
||||
|
@ -4161,6 +4162,7 @@ zdb_embedded_block(char *thing)
|
|||
exit(1);
|
||||
}
|
||||
zdb_dump_block_raw(buf, BPE_GET_LSIZE(&bp), 0);
|
||||
umem_free(buf, SPA_MAXBLOCKSIZE);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
Loading…
Reference in New Issue