summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/udev/udev-rules.c6
-rwxr-xr-xtest/udev-test.pl7
2 files changed, 10 insertions, 3 deletions
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 8470456d4c..475856db6f 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -705,10 +705,10 @@ static void attr_subst_subdir(char *attr, size_t len) {
for (dent = readdir(dir); dent != NULL; dent = readdir(dir))
if (dent->d_name[0] != '.') {
- char n[strlen(dent->d_name) + 1 + strlen(tail) + 1];
+ char n[strlen(dent->d_name) + strlen(tail) + 1];
- strscpyl(n, sizeof n, dent->d_name, "/", tail, NULL);
- if (faccessat(dirfd(dir), n, F_OK, 0)) {
+ strscpyl(n, sizeof n, dent->d_name, tail, NULL);
+ if (faccessat(dirfd(dir), n, F_OK, 0) == 0) {
strscpyl(attr, len, path, n, NULL);
break;
}
diff --git a/test/udev-test.pl b/test/udev-test.pl
index 638c3e8f4e..b047493f6b 100755
--- a/test/udev-test.pl
+++ b/test/udev-test.pl
@@ -23,8 +23,10 @@ use strict;
my $udev_bin = "./test-udev";
my $valgrind = 0;
my $gdb = 0;
+my $strace = 0;
my $udev_bin_valgrind = "valgrind --tool=memcheck --leak-check=yes --track-origins=yes --quiet $udev_bin";
my $udev_bin_gdb = "gdb --args $udev_bin";
+my $udev_bin_strace = "strace -efile $udev_bin";
my $udev_dev = "test/dev";
my $udev_run = "test/run";
my $udev_rules_dir = "$udev_run/udev/rules.d";
@@ -1330,6 +1332,8 @@ sub udev {
system("$udev_bin_valgrind $action $devpath");
} elsif ($gdb > 0) {
system("$udev_bin_gdb $action $devpath");
+ } elsif ($strace > 0) {
+ system("$udev_bin_strace $action $devpath");
} else {
system("$udev_bin", "$action", "$devpath");
}
@@ -1509,6 +1513,9 @@ foreach my $arg (@ARGV) {
} elsif ($arg =~ m/--gdb/) {
$gdb = 1;
printf("using gdb\n");
+ } elsif ($arg =~ m/--strace/) {
+ $strace = 1;
+ printf("using strace\n");
} else {
push(@list, $arg);
}