1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

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>
(cherry picked from commit 654e353d9b20f10fa275e7ae10cc50480654f079)
This commit is contained in:
Jussi Kivilinna 2018-12-01 13:43:10 +02:00 committed by Werner Koch
parent 21fdef6963
commit ebd434a45e
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -2216,6 +2216,7 @@ iobuf_copy (iobuf_t dest, iobuf_t source)
size_t nread; size_t nread;
size_t nwrote = 0; size_t nwrote = 0;
size_t max_read = 0;
int err; int err;
assert (source->use == IOBUF_INPUT || source->use == IOBUF_INPUT_TEMP); assert (source->use == IOBUF_INPUT || source->use == IOBUF_INPUT_TEMP);
@ -2232,6 +2233,9 @@ iobuf_copy (iobuf_t dest, iobuf_t source)
/* EOF. */ /* EOF. */
break; break;
if (nread > max_read)
max_read = nread;
err = iobuf_write (dest, temp, nread); err = iobuf_write (dest, temp, nread);
if (err) if (err)
break; break;
@ -2239,7 +2243,8 @@ iobuf_copy (iobuf_t dest, iobuf_t source)
} }
/* Burn the buffer. */ /* Burn the buffer. */
wipememory (temp, sizeof (temp)); if (max_read)
wipememory (temp, max_read);
xfree (temp); xfree (temp);
return nwrote; return nwrote;