History

leaking_addresses: skip all /proc/PID except /proc/1

When the system is idle it is likely that most files under /proc/PID will be identical for various processes. Scanning _all_ the PIDs under /proc is unnecessary and implies that we are thoroughly scanning /proc. This is _not_ the case because there may be ways userspace can trigger creation of /proc files that leak addresses but were not present during a scan. For these two reasons we should exclude all PID directories under /proc except '1/' Exclude all /proc/PID except /proc/1.

Tobin C. Harding committed 8 years ago

Commit 472c9e11 parent 5e4bac31 file · +12 −0Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/leaking_addresses.pl+12−0
@@ -10,6 +10,14 @@ · 9 unmodified lines
1010 # Use --debug to output path before parsing, this is useful to find files that
1111 # cause the script to choke.
1212
13+#
14+# When the system is idle it is likely that most files under /proc/PID will be
15+# identical for various processes. Scanning _all_ the PIDs under /proc is
16+# unnecessary and implies that we are thoroughly scanning /proc. This is _not_
17+# the case because there may be ways userspace can trigger creation of /proc
18+# files that leak addresses but were not present during a scan. For these two
19+# reasons we exclude all PID directories under /proc except '1/'
20+
1321 use warnings;
1422 use strict;
1523 use POSIX;
@@ -472,6 +480,10 @@ sub walk · 456 unmodified lines
472480 my $path = "$pwd/$file";
473481 next if (-l $path);
474482
483+ # skip /proc/PID except /proc/1
484+ next if (($path =~ /^\/proc\/[0-9]+$/) &&
485+ ($path !~ /^\/proc\/1$/));
486+
475487 next if (skip($path));
476488
477489 if (-d $path) {