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

Commit b1b7ba01 authored by Robert Shih's avatar Robert Shih Committed by Android (Google) Code Review
Browse files

Merge "httplive: accept data url cipher keys" into pi-dev

parents 3617795e 55a0b4dd
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -484,6 +484,9 @@ static bool MakeURL(const char *baseURL, const char *url, AString *out) {
        // Base URL must be absolute
        return false;
    }
    if (!strncasecmp("data:", url, 5)) {
        return false;
    }
    const size_t schemeEnd = (strstr(baseURL, "//") - baseURL) + 2;
    CHECK(schemeEnd == 7 || schemeEnd == 8);

+11 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <media/stagefright/foundation/ByteUtils.h>
#include <media/stagefright/foundation/MediaKeys.h>
#include <media/stagefright/foundation/avc_utils.h>
#include <media/stagefright/DataURISource.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/MetaDataUtils.h>
@@ -347,6 +348,16 @@ status_t PlaylistFetcher::decryptBuffer(
    sp<ABuffer> key;
    if (index >= 0) {
        key = mAESKeyForURI.valueAt(index);
    } else if (keyURI.startsWith("data:")) {
        sp<DataSource> keySrc = DataURISource::Create(keyURI.c_str());
        off64_t keyLen;
        if (keySrc == NULL || keySrc->getSize(&keyLen) != OK || keyLen < 0) {
            ALOGE("Malformed cipher key data uri.");
            return ERROR_MALFORMED;
        }
        key = new ABuffer(keyLen);
        keySrc->readAt(0, key->data(), keyLen);
        key->setRange(0, keyLen);
    } else {
        ssize_t err = mHTTPDownloader->fetchFile(keyURI.c_str(), &key);