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

Commit 6385ff57 authored by Alex Buynytskyy's avatar Alex Buynytskyy Committed by Automerger Merge Worker
Browse files

Merge "Check incoming array sizes before accessing." am: c25290d4

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

Change-Id: Icf93c6976e94bdd7c404bce917aa1f322a0ac415
parents e2970735 c25290d4
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2010,6 +2010,10 @@ binder::Status InstalldNativeService::getAppSize(const std::optional<std::string
        const std::vector<std::string>& codePaths, std::vector<int64_t>* _aidl_return) {
    ENFORCE_UID(AID_SYSTEM);
    CHECK_ARGUMENT_UUID(uuid);
    if (packageNames.size() != ceDataInodes.size()) {
        return exception(binder::Status::EX_ILLEGAL_ARGUMENT,
                         "packageNames/ceDataInodes size mismatch.");
    }
    for (const auto& packageName : packageNames) {
        CHECK_ARGUMENT_PACKAGE_NAME(packageName);
    }
+13 −0
Original line number Diff line number Diff line
@@ -485,6 +485,19 @@ TEST_F(ServiceTest, GetAppSize) {
        system(removeCommand.c_str());
    }
}
TEST_F(ServiceTest, GetAppSizeWrongSizes) {
    int32_t externalStorageAppId = -1;
    std::vector<int64_t> externalStorageSize;

    std::vector<std::string> codePaths;
    std::vector<std::string> packageNames = {"package1", "package2"};
    std::vector<int64_t> ceDataInodes = {0};

    EXPECT_BINDER_FAIL(service->getAppSize(std::nullopt, packageNames, 0,
                                           InstalldNativeService::FLAG_USE_QUOTA,
                                           externalStorageAppId, ceDataInodes, codePaths,
                                           &externalStorageSize));
}
static bool mkdirs(const std::string& path, mode_t mode) {
    struct stat sb;
    if (stat(path.c_str(), &sb) != -1 && S_ISDIR(sb.st_mode)) {