aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2018-08-02 20:44:07 +0000
committerAlexander Motin <mav@FreeBSD.org>2018-08-02 20:44:07 +0000
commitac879e61ad2fbadcf3c8e393bf4c519d0893c76e (patch)
treec0e17e1533738ae12d7edd40f27df1f45417c003
parent5463ca24bff82c4a3acc4bd64ce8006a74940ec1 (diff)
parent903252254b69357897fe24ae663ff0b342de07cd (diff)
downloadsrc-ac879e61ad2fbadcf3c8e393bf4c519d0893c76e.tar.gz
src-ac879e61ad2fbadcf3c8e393bf4c519d0893c76e.zip
9523 Large alloc in zdb can cause trouble
16MB alloc in zdb_embedded_block() can cause cores in certain situations (clang, gcc55). OsX commit: https://github.com/openzfsonosx/zfs/commit/ced236a5da6e72ea7bf6d2919fe14e17cffe10f1 FreeBSD commit: https://svnweb.freebsd.org/base?view=revision&revision=326150 illumos/illumos-gate@03a4c2f4bfaca30115963b76445279b36468a614 Reviewed by: Igor Kozhukhov <igor@dilos.org> Reviewed by: Andriy Gapon <avg@FreeBSD.org> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Dan McDonald <danmcd@joyent.com> Author: Jorgen Lundman <lundman@lundman.net> This is an update for r326150 (by avg), where this change comes from.
Notes
Notes: svn path=/head/; revision=337179
-rw-r--r--cddl/contrib/opensolaris/cmd/zdb/zdb.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/cddl/contrib/opensolaris/cmd/zdb/zdb.c b/cddl/contrib/opensolaris/cmd/zdb/zdb.c
index b92181935e32..3c72caf1e466 100644
--- a/cddl/contrib/opensolaris/cmd/zdb/zdb.c
+++ b/cddl/contrib/opensolaris/cmd/zdb/zdb.c
@@ -4950,19 +4950,18 @@ zdb_embedded_block(char *thing)
words + 8, words + 9, words + 10, words + 11,
words + 12, words + 13, words + 14, words + 15);
if (err != 16) {
- (void) printf("invalid input format\n");
+ (void) fprintf(stderr, "invalid input format\n");
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);
+ (void) fprintf(stderr, "out of memory\n");
exit(1);
}
err = decode_embedded_bp(&bp, buf, BPE_GET_LSIZE(&bp));
if (err != 0) {
- (void) printf("decode failed: %u\n", err);
+ (void) fprintf(stderr, "decode failed: %u\n", err);
free(buf);
exit(1);
}