Re: [V9fs-developer] [PATCH] version pointer uninitialized

From: Tomas Bortoli
Date: Thu Jul 12 2018 - 12:44:25 EST


On 07/11/2018 03:26 AM, jiangyiwen wrote:
> On 2018/7/10 6:29, Tomas Bortoli wrote:
>> The p9_client_version() does not initialize the version
>> pointer. If the call to p9pdu_readf() returns an error and version has not
>> been allocated in p9pdu_readf(), then the program will jump to the "error"
>> label and will try to free the version pointer. If version is not
>> initialized, free() will be called with uninitialized, garbage data and
>> will provoke a crash.
>>
>> Signed-off-by: Tomas Bortoli <tomasbortoli@xxxxxxxxx>
> Reviewed-by: Yiwen Jiang <jiangyiwen@xxxxxxxxxx>
>
>> Reported-by: syzbot+65c6b72f284a39d416b4@xxxxxxxxxxxxxxxxxxxxxxxxx
>> ---
>> net/9p/client.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/net/9p/client.c b/net/9p/client.c
>> index 18c5271910dc..40f7c47f2f74 100644
>> --- a/net/9p/client.c
>> +++ b/net/9p/client.c
>> @@ -957,7 +957,7 @@ static int p9_client_version(struct p9_client *c)
>> {
>> int err = 0;
>> struct p9_req_t *req;
>> - char *version;
>> + char *version = NULL;
>> int msize;
>>
>> p9_debug(P9_DEBUG_9P, ">>> TVERSION msize %d protocol %d\n",
>>
>

+ Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>

This goes with the other patch: [V9fs-developer] [PATCH]
p9_parse_header() validate PDU length

Tomas