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

Commit d066bc8f authored by Patrik Lindgren's avatar Patrik Lindgren Committed by Takahiro Aizawa
Browse files

Handle error result from DrmManagerClient correctly

readAtDRM() must handle the case when DrmManagerClient::pread()
returns an error (-1) correctly. This is a degrade in Android L.

Change-Id: Id7ff124d178e26931dddac5ac73697cfe6da501c
parent 2d772fd4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ private:
    sp<DecryptHandle> mDecryptHandle;
    DrmManagerClient *mDrmManagerClient;
    int64_t mDrmBufOffset;
    size_t mDrmBufSize;
    ssize_t mDrmBufSize;
    unsigned char *mDrmBuf;

    ssize_t readAtDRM(off64_t offset, void *data, size_t size);
+2 −2
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@ ssize_t FileSource::readAtDRM(off64_t offset, void *data, size_t size) {
    }

    if (mDrmBuf != NULL && mDrmBufSize > 0 && (offset + mOffset) >= mDrmBufOffset
            && (offset + mOffset + size) <= (mDrmBufOffset + mDrmBufSize)) {
            && (offset + mOffset + size) <= static_cast<size_t>(mDrmBufOffset + mDrmBufSize)) {
        /* Use buffered data */
        memcpy(data, (void*)(mDrmBuf+(offset+mOffset-mDrmBufOffset)), size);
        return size;
@@ -177,7 +177,7 @@ ssize_t FileSource::readAtDRM(off64_t offset, void *data, size_t size) {
                DRM_CACHE_SIZE, offset + mOffset);
        if (mDrmBufSize > 0) {
            int64_t dataRead = 0;
            dataRead = size > mDrmBufSize ? mDrmBufSize : size;
            dataRead = size > static_cast<size_t>(mDrmBufSize) ? mDrmBufSize : size;
            memcpy(data, (void*)mDrmBuf, dataRead);
            return dataRead;
        } else {