Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e66910a5 authored by George Burgess IV's avatar George Burgess IV
Browse files

Fix a memory leak

If nLayers is insane, we won't properly free `video` in the `fail`
block, since the nLayers check is done before we assign `video` to
`decCtrl->videoDecoderData`.

Caught by the static analyzer.

Bug: None
Test: Ran the analyzer again. It no longer complains about this leak.

Change-Id: I6ec612b75f9d325c7693f670a96d95363f6bb2ae
parent 334e5dff
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ OSCL_EXPORT_REF Bool PVInitVideoDecoder(VideoDecControls *decCtrl, uint8 *volbuf
#else
        if ((size_t)nLayers > SIZE_MAX / sizeof(Vol *)) {
            status = PV_FALSE;
            oscl_free(video);
            goto fail;
        }

@@ -115,7 +116,8 @@ OSCL_EXPORT_REF Bool PVInitVideoDecoder(VideoDecControls *decCtrl, uint8 *volbuf
        if (video->vol == NULL) status = PV_FALSE;
        video->memoryUsage += nLayers * sizeof(Vol *);


        /* be sure not to leak any previous state */
        PVCleanUpVideoDecoder(decCtrl);
        /* we need to setup this pointer for the application to */
        /*    pass it around.                                   */
        decCtrl->videoDecoderData = (void *) video;