From ebd434a45eefd34bd9d9f875f22a74a47b88dd5f Mon Sep 17 00:00:00 2001 From: Jussi Kivilinna Date: Sat, 1 Dec 2018 13:43:10 +0200 Subject: [PATCH] common/iobuf: fix memory wiping in iobuf_copy * common/iobuf.c (iobuf_copy): Wipe used area of buffer instead of first sizeof(char*) bytes. -- Signed-off-by: Jussi Kivilinna (cherry picked from commit 654e353d9b20f10fa275e7ae10cc50480654f079) --- common/iobuf.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/iobuf.c b/common/iobuf.c index 8de46f4c3..589bdf9f6 100644 --- a/common/iobuf.c +++ b/common/iobuf.c @@ -2216,6 +2216,7 @@ iobuf_copy (iobuf_t dest, iobuf_t source) size_t nread; size_t nwrote = 0; + size_t max_read = 0; int err; assert (source->use == IOBUF_INPUT || source->use == IOBUF_INPUT_TEMP); @@ -2232,6 +2233,9 @@ iobuf_copy (iobuf_t dest, iobuf_t source) /* EOF. */ break; + if (nread > max_read) + max_read = nread; + err = iobuf_write (dest, temp, nread); if (err) break; @@ -2239,7 +2243,8 @@ iobuf_copy (iobuf_t dest, iobuf_t source) } /* Burn the buffer. */ - wipememory (temp, sizeof (temp)); + if (max_read) + wipememory (temp, max_read); xfree (temp); return nwrote;