a3a04f
From 6dd87a82a733184df3a6f09e020f6a3c2b365ca2 Mon Sep 17 00:00:00 2001
a3a04f
From: Jeremy Allison <jra@samba.org>
a3a04f
Date: Wed, 20 Sep 2017 11:04:50 -0700
a3a04f
Subject: [PATCH] s3: smbd: Chain code can return uninitialized memory when
a3a04f
 talloc buffer is grown.
a3a04f
a3a04f
Ensure we zero out unused grown area.
a3a04f
a3a04f
CVE-2017-15275
a3a04f
a3a04f
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13077
a3a04f
a3a04f
Signed-off-by: Jeremy Allison <jra@samba.org>
a3a04f
---
a3a04f
 source3/smbd/srvstr.c | 14 ++++++++++++++
a3a04f
 1 file changed, 14 insertions(+)
a3a04f
a3a04f
diff --git a/source3/smbd/srvstr.c b/source3/smbd/srvstr.c
a3a04f
index 56dceba8c6c..c2d70b32c32 100644
a3a04f
--- a/source3/smbd/srvstr.c
a3a04f
+++ b/source3/smbd/srvstr.c
a3a04f
@@ -110,6 +110,20 @@ ssize_t message_push_string(uint8_t **outbuf, const char *str, int flags)
a3a04f
 		DEBUG(0, ("srvstr_push failed\n"));
a3a04f
 		return -1;
a3a04f
 	}
a3a04f
+
a3a04f
+	/*
a3a04f
+	 * Ensure we clear out the extra data we have
a3a04f
+	 * grown the buffer by, but not written to.
a3a04f
+	 */
a3a04f
+	if (buf_size + result < buf_size) {
a3a04f
+		return -1;
a3a04f
+	}
a3a04f
+	if (grow_size < result) {
a3a04f
+		return -1;
a3a04f
+	}
a3a04f
+
a3a04f
+	memset(tmp + buf_size + result, '\0', grow_size - result);
a3a04f
+
a3a04f
 	set_message_bcc((char *)tmp, smb_buflen(tmp) + result);
a3a04f
 
a3a04f
 	*outbuf = tmp;
a3a04f
-- 
a3a04f
2.14.2.920.gcf0c67979c-goog
a3a04f