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

Commit 4878995f authored by Robert Shih's avatar Robert Shih
Browse files

AMPEG4ElementaryAssembler: reject malformed desc

Bug: 124777537
Test: (1) python rtsp_server2.py $server_addr
Test: (2) adb shell am start -a android.intent.action.VIEW
  -n com.google.android.apps.photos/.pager.HostPhotoPagerActivity
  -t video/'*' -d rtsp://$server_addr/a.mp4
Change-Id: Iacc6882819e0d99ffdab409324301e8f8d8125f7
parent b15473e5
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -203,6 +203,14 @@ struct AUHeader {
    unsigned mSerial;
    unsigned mSerial;
};
};


bool AMPEG4ElementaryAssembler::initCheck() {
    if(mSizeLength == 0 || mIndexLength == 0 || mIndexDeltaLength == 0) {
        android_errorWriteLog(0x534e4554, "124777537");
        return false;
    }
    return true;
}

ARTPAssembler::AssemblyStatus AMPEG4ElementaryAssembler::addPacket(
ARTPAssembler::AssemblyStatus AMPEG4ElementaryAssembler::addPacket(
        const sp<ARTPSource> &source) {
        const sp<ARTPSource> &source) {
    List<sp<ABuffer> > *queue = source->queue();
    List<sp<ABuffer> > *queue = source->queue();
+1 −0
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ struct AMPEG4ElementaryAssembler : public ARTPAssembler {
    AMPEG4ElementaryAssembler(
    AMPEG4ElementaryAssembler(
            const sp<AMessage> &notify, const AString &desc,
            const sp<AMessage> &notify, const AString &desc,
            const AString &params);
            const AString &params);
    virtual bool initCheck();


protected:
protected:
    virtual ~AMPEG4ElementaryAssembler();
    virtual ~AMPEG4ElementaryAssembler();
+1 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,7 @@ struct ARTPAssembler : public RefBase {


    void onPacketReceived(const sp<ARTPSource> &source);
    void onPacketReceived(const sp<ARTPSource> &source);
    virtual void onByeReceived() = 0;
    virtual void onByeReceived() = 0;
    virtual bool initCheck() { return true; }


protected:
protected:
    virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source) = 0;
    virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source) = 0;
+8 −2
Original line number Original line Diff line number Diff line
@@ -82,6 +82,10 @@ ARTPSource::ARTPSource(
    } else {
    } else {
        TRESPASS();
        TRESPASS();
    }
    }

    if (mAssembler != NULL && !mAssembler->initCheck()) {
        mAssembler.clear();
    }
}
}


static uint32_t AbsDiff(uint32_t seq1, uint32_t seq2) {
static uint32_t AbsDiff(uint32_t seq1, uint32_t seq2) {
@@ -89,7 +93,7 @@ static uint32_t AbsDiff(uint32_t seq1, uint32_t seq2) {
}
}


void ARTPSource::processRTPPacket(const sp<ABuffer> &buffer) {
void ARTPSource::processRTPPacket(const sp<ABuffer> &buffer) {
    if (queuePacket(buffer) && mAssembler != NULL) {
    if (mAssembler != NULL && queuePacket(buffer)) {
        mAssembler->onPacketReceived(this);
        mAssembler->onPacketReceived(this);
    }
    }
}
}
@@ -171,8 +175,10 @@ bool ARTPSource::queuePacket(const sp<ABuffer> &buffer) {
}
}


void ARTPSource::byeReceived() {
void ARTPSource::byeReceived() {
    if (mAssembler != NULL) {
        mAssembler->onByeReceived();
        mAssembler->onByeReceived();
    }
    }
}


void ARTPSource::addFIR(const sp<ABuffer> &buffer) {
void ARTPSource::addFIR(const sp<ABuffer> &buffer) {
    if (!mIssueFIRRequests) {
    if (!mIssueFIRRequests) {