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

Commit b4d29961 authored by David Anderson's avatar David Anderson Committed by Automerger Merge Worker
Browse files

Merge "init: Add tests and document the new fnmatch behavior in...

Merge "init: Add tests and document the new fnmatch behavior in ExternalFirmwareHandler." am: 6939583d am: b383eb7f am: eb50ea4e

Original change: https://android-review.googlesource.com/c/platform/system/core/+/1677040

Change-Id: Ia7b82f126dd25b7caa2b66ff8b5381026a816d19
parents 55862852 eb50ea4e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -130,6 +130,10 @@ For example
Will launch `/vendor/bin/led_coeffs.bin` as the system user instead of serving the default firmware
for `/devices/leds/red/firmware/coeffs.bin`.

The `devpath` argument may include asterisks (`*`) to match multiple paths. For example, the string
`/dev/*/red` will match `/dev/leds/red` as well as `/dev/lights/red`. The pattern matching follows
the rules of the fnmatch() function.

Ueventd will provide the uevent `DEVPATH` and `FIRMWARE` to this external program on the environment
via environment variables with the same names. Ueventd will use the string written to stdout as the
new name of the firmware to load. It will still look for the new firmware in the list of firmware
+17 −0
Original line number Diff line number Diff line
@@ -103,6 +103,23 @@ int HandleBadPath(int argc, char** argv) {
    return 0;
}

TEST(firmware_handler, Matching) {
    ExternalFirmwareHandler h("/dev/path/a.bin", getuid(), "/test");
    ASSERT_TRUE(h.match("/dev/path/a.bin"));
    ASSERT_FALSE(h.match("/dev/path/a.bi"));

    h = ExternalFirmwareHandler("/dev/path/a.*", getuid(), "/test");
    ASSERT_TRUE(h.match("/dev/path/a.bin"));
    ASSERT_TRUE(h.match("/dev/path/a.bix"));
    ASSERT_FALSE(h.match("/dev/path/b.bin"));

    h = ExternalFirmwareHandler("/dev/*/a.bin", getuid(), "/test");
    ASSERT_TRUE(h.match("/dev/path/a.bin"));
    ASSERT_TRUE(h.match("/dev/other/a.bin"));
    ASSERT_FALSE(h.match("/dev/other/c.bin"));
    ASSERT_FALSE(h.match("/dev/path/b.bin"));
}

}  // namespace init
}  // namespace android