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

Commit c6e03916 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...

Merge "Add tmp file to ramdom_fd for parcel fuzzing" into main am: e69355e4 am: 976b126f am: 091e62c0 am: dd10a1cc am: 61174d57

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2748135



Change-Id: Iac96be706cf516e09d0444a02e90527239116eb4
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 95b8646a 61174d57
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;