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

Commit 23256e44 authored by George Burgess IV's avatar George Burgess IV
Browse files

nuplayer2: Fix two use-after-frees

- std::ostringstream::c_str returns a string by value, so we can't
  immediately call c_str() on it and assign that to a variable.
- DrmUUID::arrayToHex returns a String8 by value. Similar "can't just
  call string() and assign that to a variable".

Both caught by our static analyzer.

Bug: None
Test: Ran the analyzer again

Change-Id: Ia9e0b2b00ee5150225dd487f3611a3893946fa4b
parent 21d312e7
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -148,9 +148,10 @@ sp<ABuffer> NuPlayer2Drm::retrieveDrmInfo(PsshInfo *psshInfo)
    }

    uint32_t psshSize = pssh.tellp();
    const uint8_t* psshPtr = reinterpret_cast<const uint8_t*>(pssh.str().c_str());
    const char *psshHex = DrmUUID::arrayToHex(psshPtr, psshSize).string();
    ALOGV("retrieveDrmInfo: MEDIA_DRM_INFO  PSSH: size: %u %s", psshSize, psshHex);
    std::string psshBase = pssh.str();
    const auto* psshPtr = reinterpret_cast<const uint8_t*>(psshBase.c_str());
    ALOGV("retrieveDrmInfo: MEDIA_DRM_INFO  PSSH: size: %u %s", psshSize,
            DrmUUID::arrayToHex(psshPtr, psshSize).string());

    // 1) Write PSSH bytes
    drmInfo.write(reinterpret_cast<const char *>(&psshSize), sizeof(psshSize));