* Fix insecure temporary file problems for immknmz and impwagent. (CVE Id: CAN-2002-1395, backport from im-141+tats20021028.diff) --- im-140.orig/immknmz.in +++ im-140/immknmz.in @@ -115,7 +115,12 @@ } if ( scalar(@filelist) > 0 ){ - im_open(\*TEMPFILE,">$tempfile"); + unless (sysopen(\*TEMPFILE, "$tempfile", + O_RDWR()|O_CREAT()|O_EXCL(), 0600)) { + print STDERR "$Prog: can not create file: $tempfile.\n"; + exit 1; + } + binmode(\*TEMPFILE); foreach ( @filelist ){ if (!-d "$msgdir/$_"){ if ((&win95p() || &os2p()) && !&namazuv2()){ --- im-140.orig/impwagent.in +++ im-140/impwagent.in @@ -103,7 +103,10 @@ exit 1; } - mkdir ($dir, 0700); + unless (mkdir($dir, 0700)) { + print STDERR "$Prog: can not create directory: $dir.\n"; + exit 1; + } unless (socket(SOCK, &AF_INET, &SOCK_STREAM, 0)) { print STDERR "$Prog: socket: $!\n"; @@ -126,7 +129,10 @@ exit 1; } - mkdir ($dir, 0700); + unless (mkdir($dir, 0700)) { + print STDERR "$Prog: can not create directory: $dir.\n"; + exit 1; + } unless (socket(SOCK, &AF_UNIX, &SOCK_STREAM, 0)) { print STDERR "$Prog: socket: $!\n";