[Mesa-dev] [PATCH 2/4] intel/decoder: Avoid freeing invalid pointer
Sagar Ghuge
sagar.ghuge at intel.com
Wed Sep 5 18:22:20 UTC 2018
On 09/05/2018 11:06 AM, Lionel Landwerlin wrote:
> On 05/09/2018 19:02, Sagar Ghuge wrote:
>> Hi Lionel,
>>
>> Thanks for reviewing patches and comments.
>>
>> On 09/05/2018 10:29 AM, Lionel Landwerlin wrote:
>>> On 05/09/2018 18:19, Sagar Ghuge wrote:
>>>> Signed-off-by: Sagar Ghuge <sagar.ghuge at intel.com>
>>>> ---
>>>> src/intel/common/gen_decoder.c | 4 ----
>>>> 1 file changed, 4 deletions(-)
>>>>
>>>> diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
>>>> index dbd060d53c..c44b8f060d 100644
>>>> --- a/src/intel/common/gen_decoder.c
>>>> +++ b/src/intel/common/gen_decoder.c
>>>> @@ -662,8 +662,6 @@ gen_spec_load_from_path(const struct gen_device_info *devinfo,
>>>> len = fread(buf, 1, XML_BUFFER_SIZE, input);
>>>> if (len == 0) {
>>>> fprintf(stderr, "fread: %m\n");
>>>> - free(ctx.spec);
>>>> - ctx.spec = NULL;
>>>> goto end;
>>>> }
>>>> if (XML_ParseBuffer(ctx.parser, len, len == 0) == 0) {
>>>> @@ -672,8 +670,6 @@ gen_spec_load_from_path(const struct gen_device_info *devinfo,
>>>> XML_GetCurrentLineNumber(ctx.parser),
>>>> XML_GetCurrentColumnNumber(ctx.parser),
>>>> XML_ErrorString(XML_GetErrorCode(ctx.parser)));
>>>> - free(ctx.spec);
>>>> - ctx.spec = NULL;
>>>> goto end;
>>>> }
>>>> } while (len > 0);
>>> Looks good but we're still missing a ralloc_free(ctx.spec) after the end label.
>> In patch 4, I am freeing up gen_batch_decode_ctx instance using gen_batch_decode_ctx_finish() which is also responsible for destroying spec.
>
>
> I see. But I assumed that would be only in the case this function succeeded.
>
> If we didn't manage to parse the genxml, is there much of a point trying to decode anything?
>
ohh. I got it. My bad, I was trying to fix wrong problem I guess. fread does not distinguish between end-of-file and error, so according to that I will free up spec.
>
>
More information about the mesa-dev
mailing list