Instead of using a statically named path in /tmp, use File::Temp to create
(and remove) the temporary file used for parsing /proc/config.gz.

Signed-off-by: Kees Cook <keesc...@chromium.org>
---
Cc: Tycho Andersen <tycho@tycho.pizza>
Cc: "Tobin C. Harding" <m...@tobin.cc>
Cc: linux-hardening@vger.kernel.org
---
 scripts/leaking_addresses.pl | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/scripts/leaking_addresses.pl b/scripts/leaking_addresses.pl
index e695634d153d..dd05fbcf15c5 100755
--- a/scripts/leaking_addresses.pl
+++ b/scripts/leaking_addresses.pl
@@ -23,6 +23,7 @@ use strict;
 use POSIX;
 use File::Basename;
 use File::Spec;
+use File::Temp qw/tempfile/;
 use Cwd 'abs_path';
 use Term::ANSIColor qw(:constants);
 use Getopt::Long qw(:config no_auto_abbrev);
@@ -221,6 +222,7 @@ sub get_kernel_config_option
 {
        my ($option) = @_;
        my $value = "";
+       my $tmp_fh;
        my $tmp_file = "";
        my @config_files;
 
@@ -228,7 +230,8 @@ sub get_kernel_config_option
        if ($kernel_config_file ne "") {
                @config_files = ($kernel_config_file);
        } elsif (-R "/proc/config.gz") {
-               my $tmp_file = "/tmp/tmpkconf";
+               ($tmp_fh, $tmp_file) = tempfile("config.gz-XXXXXX",
+                                               UNLINK => 1);
 
                if (system("gunzip < /proc/config.gz > $tmp_file")) {
                        dprint("system(gunzip < /proc/config.gz) failed\n");
@@ -250,10 +253,6 @@ sub get_kernel_config_option
                }
        }
 
-       if ($tmp_file ne "") {
-               system("rm -f $tmp_file");
-       }
-
        return $value;
 }
 
-- 
2.34.1


Reply via email to