chiark / gitweb /
[PATCH] allow to match against empty key values
[elogind.git] / test / udev-test.pl
index 50ea5858a408c496c04a20e40b3aca7bf8ccb5ed..27ca37115c721de7353f6cb662bf3984571a11d0 100644 (file)
@@ -806,7 +806,7 @@ EOF
                exp_name        => "link",
                exp_target      => "link",
                exp_rem_error   => "yes",
-               option          => "clear",
+               option          => "clean",
                rules           => <<EOF
 KERNEL=="tty0", NAME="link", SYMLINK="link"
 EOF
@@ -1006,7 +1006,7 @@ EOF
                subsys          => "block",
                devpath         => "/block/sda/sda4",
                exp_name        => "cdrom2",
-               option          => "clear",
+               option          => "clean",
                rules           => <<EOF
 KERNEL=="sda4", NAME="cdrom%e"
 EOF
@@ -1067,7 +1067,7 @@ EOF
                devpath         => "/block/sda",
                exp_name        => "node14",
                exp_rem_error   => "yes",
-               option          => "clear",
+               option          => "clean",
                rules           => <<EOF
 BUS=="scsi", KERNEL=="sda", NAME="node", OPTIONS="ignore_remove, all_partitions"
 EOF
@@ -1213,6 +1213,36 @@ BUS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="go", NAME="wrong"
 BUS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="yes", ENV{ACTION}=="add", ENV{DEVPATH}=="/block/sda/sdax1", NAME="no"
 BUS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="test", ENV{ACTION}=="add", ENV{DEVPATH}=="/block/sda/sda1", NAME="true"
 BUS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="bad", NAME="bad"
+EOF
+       },
+       {
+               desc            => "untrusted string sanitize",
+               subsys          => "block",
+               devpath         => "/block/sda/sda1",
+               exp_name        => "sane",
+               rules           => <<EOF
+BUS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e name; (/sbin/badprogram)", RESULT="name_ _/sbin/badprogram_", NAME="sane"
+EOF
+       },
+       {
+               desc            => "read sysfs value from device down in the chain",
+               subsys          => "block",
+               devpath         => "/class/tty/ttyUSB0",
+               exp_name        => "serial-0000:00:09.0",
+               rules           => <<EOF
+KERNEL=="ttyUSB*", NAME="serial-%s{serial}"
+EOF
+       },
+       {
+               desc            => "match against empty key string",
+               subsys          => "block",
+               devpath         => "/block/sda",
+               exp_name        => "ok",
+               rules           => <<EOF
+KERNEL=="sda", SYSFS{nothing}!="", NAME="not-1-ok"
+KERNEL=="sda", SYSFS{nothing}=="", NAME="not-2-ok"
+KERNEL=="sda", SYSFS{vendor}!="", NAME="ok"
+KERNEL=="sda", SYSFS{vendor}=="", NAME="not-3-ok"
 EOF
        },
 );
@@ -1397,7 +1427,7 @@ sub run_test {
 
        print "\n";
 
-       if (defined($rules->{option}) && $rules->{option} eq "clear") {
+       if (defined($rules->{option}) && $rules->{option} eq "clean") {
                system("rm -rf $udev_db");
                system("rm -rf $udev_root");
                mkdir($udev_root) || die "unable to create udev_root: $udev_root\n";