Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Dec 2017 16:47:19 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r326536 - stable/11/cddl/contrib/opensolaris/cmd/zdb
Message-ID:  <201712041647.vB4GlJaf091553@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avg
Date: Mon Dec  4 16:47:19 2017
New Revision: 326536
URL: https://svnweb.freebsd.org/changeset/base/326536

Log:
  MFC r326150: zdb: use a heap allocation instead of a huge array on stack

Modified:
  stable/11/cddl/contrib/opensolaris/cmd/zdb/zdb.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- stable/11/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Mon Dec  4 16:38:20 2017	(r326535)
+++ stable/11/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Mon Dec  4 16:47:19 2017	(r326536)
@@ -3724,7 +3724,7 @@ zdb_embedded_block(char *thing)
 {
 	blkptr_t bp = { 0 };
 	unsigned long long *words = (void *)&bp;
-	char buf[SPA_MAXBLOCKSIZE];
+	char *buf;
 	int err;
 
 	err = sscanf(thing, "%llx:%llx:%llx:%llx:%llx:%llx:%llx:%llx:"
@@ -3738,12 +3738,20 @@ zdb_embedded_block(char *thing)
 		exit(1);
 	}
 	ASSERT3U(BPE_GET_LSIZE(&bp), <=, SPA_MAXBLOCKSIZE);
+	buf = malloc(SPA_MAXBLOCKSIZE);
+	if (buf == NULL) {
+		(void) fprintf(stderr, "%s: failed to allocate %llu bytes\n",
+		    __func__, SPA_MAXBLOCKSIZE);
+		exit(1);
+	}
 	err = decode_embedded_bp(&bp, buf, BPE_GET_LSIZE(&bp));
 	if (err != 0) {
 		(void) printf("decode failed: %u\n", err);
+		free(buf);
 		exit(1);
 	}
 	zdb_dump_block_raw(buf, BPE_GET_LSIZE(&bp), 0);
+	free(buf);
 }
 
 static boolean_t



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201712041647.vB4GlJaf091553>