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

Commit 80a22163 authored by George Burgess IV's avatar George Burgess IV
Browse files

effects: fix a theoretical memory leak

`realloc` doesn't deallocate `param` if it fails. Since the loop ends in
a `free`, we just need to avoid overwriting `param` until after the
check.

Caught by the static analyzer:

frameworks/av/services/audioflinger/Effects.cpp:1868:9: warning:
Potential leak of memory pointed to by 'param'
[clang-analyzer-unix.Malloc]

Bug: None
Test: TreeHugger

Change-Id: I58fe4319927b3ea99989e1fb1dc2dabe89c72ef8
parent 3eef87ec
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1856,12 +1856,13 @@ status_t AudioFlinger::EffectHandle::command(uint32_t cmdCode,
            }

            // copy to local memory in case of client corruption b/32220769
            param = (effect_param_t *)realloc(param, size);
            if (param == NULL) {
            auto *newParam = (effect_param_t *)realloc(param, size);
            if (newParam == NULL) {
                ALOGW("command(): out of memory");
                status = NO_MEMORY;
                break;
            }
            param = newParam;
            memcpy(param, p, size);

            int reply = 0;