|
From: | Pádraig Brady |
Subject: | Re: [PATCH] randread: unitialized memory fix |
Date: | Tue, 21 Sep 2021 16:14:39 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Thunderbird/84.0 |
On 21/09/2021 15:40, Mikhail Barashkov via GNU coreutils General Discussion wrote:
Randread was allocating memory, but not setting it to 0, resulting, in particular, to a crash in shuf program in E2K CPU protected mode (later on s->bug is used by shuf in ISAAC_MIX as the seed parameter). This patch makes sure the memory buffer is zeroed out correctly. diff --git a/gl/lib/randread.c b/gl/lib/randread.c index 7124e3df0..8e6b1c5b8 100644 --- a/gl/lib/randread.c +++ b/gl/lib/randread.c @@ -132,6 +132,7 @@ static struct randread_source * simple_new (FILE *source, void const *handler_arg) { struct randread_source *s = xmalloc (sizeof *s); + memset(s, 0, sizeof *s); s->source = source; s->handler = randread_error; s->handler_arg = handler_arg;
I'm wary of the unconditional initialization of this large struct here. I'm reminded of this general discussion https://research.swtch.com/sparse If __e2k__ needs this, we should probably restrict to that arch? Also should you be using xcalloc(1, sizeof *s) instead? I'll let Paul review this as he's most familiar with this code. cheers, Pádraig
[Prev in Thread] | Current Thread | [Next in Thread] |