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

Commit d07f45a2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Create decoder using fd and buffer" into main am: d860f08a am: cb209bed

parents 6997f294 cb209bed
Loading
Loading
Loading
Loading
+16 −2
Original line number Original line Diff line number Diff line
@@ -31,6 +31,20 @@ struct PixelFreer {


using PixelPointer = std::unique_ptr<void, PixelFreer>;
using PixelPointer = std::unique_ptr<void, PixelFreer>;


AImageDecoder* init(const uint8_t* data, size_t size, bool useFileDescriptor) {
    AImageDecoder* decoder = nullptr;
    if (useFileDescriptor) {
        constexpr char testFd[] = "tempFd";
        int32_t fileDesc = open(testFd, O_RDWR | O_CREAT | O_TRUNC);
        write(fileDesc, data, size);
        AImageDecoder_createFromFd(fileDesc, &decoder);
        close(fileDesc);
    } else {
        AImageDecoder_createFromBuffer(data, size, &decoder);
    }
    return decoder;
}

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
    FuzzedDataProvider dataProvider = FuzzedDataProvider(data, size);
    FuzzedDataProvider dataProvider = FuzzedDataProvider(data, size);
    /**
    /**
@@ -39,8 +53,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
     */
     */
    const int32_t dataSize = dataProvider.ConsumeIntegralInRange<int32_t>(0, (size * 80) / 100);
    const int32_t dataSize = dataProvider.ConsumeIntegralInRange<int32_t>(0, (size * 80) / 100);
    std::vector<uint8_t> inputBuffer = dataProvider.ConsumeBytes<uint8_t>(dataSize);
    std::vector<uint8_t> inputBuffer = dataProvider.ConsumeBytes<uint8_t>(dataSize);
    AImageDecoder* decoder = nullptr;
    AImageDecoder* decoder =
    AImageDecoder_createFromBuffer(inputBuffer.data(), inputBuffer.size(), &decoder);
            init(inputBuffer.data(), inputBuffer.size(), dataProvider.ConsumeBool());
    if (!decoder) {
    if (!decoder) {
        return 0;
        return 0;
    }
    }