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

Commit 091e62c0 authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge "Add tmp file to ramdom_fd for parcel fuzzing" into main am: e69355e4 am: 976b126f

parents 539f6b01 976b126f
Loading
Loading
Loading
Loading
+59 −34
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ std::vector<unique_fd> getRandomFds(FuzzedDataProvider* provider) {
    const char* fdType;

    std::vector<unique_fd> fds = provider->PickValueInArray<
            std::function<std::vector<unique_fd>()>>({
            [&]() {
            std::function<std::vector<unique_fd>()>>(
            {[&]() {
                 fdType = "ashmem";
                 std::vector<unique_fd> ret;
                 ret.push_back(unique_fd(
@@ -62,6 +62,31 @@ std::vector<unique_fd> getRandomFds(FuzzedDataProvider* provider) {
                 ret.push_back(unique_fd(pipefds[1]));
                 return ret;
             },
             [&]() {
                 fdType = "tempfd";
                 char name[PATH_MAX];
#if defined(__ANDROID__)
                 snprintf(name, sizeof(name), "/data/local/tmp/android-tempfd-test-%d-XXXXXX",
                          getpid());
#else
                 snprintf(name, sizeof(name), "/tmp/android-tempfd-test-%d-XXXXXX", getpid());
#endif
                 int fd = mkstemp(name);
                 CHECK_NE(fd, -1) << "Failed to create file " << name << ", errno: " << errno;
                 unlink(name);
                 if (provider->ConsumeBool()) {
                     CHECK_NE(TEMP_FAILURE_RETRY(
                                      ftruncate(fd,
                                                provider->ConsumeIntegralInRange<size_t>(0, 4096))),
                              -1)
                             << "Failed to truncate file, errno: " << errno;
                 }

                 std::vector<unique_fd> ret;
                 ret.push_back(unique_fd(fd));
                 return ret;
             }

            })();

    for (const auto& fd : fds) CHECK(fd.ok()) << fd.get() << " " << fdType;