Mailing List Archive

[PATCH 2/2] 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 <jussi.kivilinna@iki.fi>
---
common/iobuf.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/common/iobuf.c b/common/iobuf.c
index 5eeba8fe6..05944255f 100644
--- a/common/iobuf.c
+++ b/common/iobuf.c
@@ -2262,6 +2262,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);
@@ -2278,6 +2279,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;
@@ -2285,7 +2289,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;


_______________________________________________
Gnupg-devel mailing list
Gnupg-devel@gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-devel