MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //proc/self/root/proc/self/root/scripts.20110531.215904.25158/typocheck
#!/usr/bin/perl

my $line = 0;
open(SCRIPT,"<",$ARGV[0]);
while(<SCRIPT>) {
	$line++;
	if ($line == 1 && !/perl/) {
		die "$ARGV[0] is missing #!/usr/bin/perl";
	}
	if (/safeclose/ && !/SafeFile/) {
		print "SafeFile:: explicit missing at line ${line}: $_";
		next();
	}
	if (/safeopen/ && !/SafeFile/) {
		print "SafeFile:: explicit missing at line ${line}: $_";
		next();
	}
	if (!/SafeFile/ && /[\s\t]+open[\s\t\(]+[\s\t]*([^\,]+)*[\s\t]*/) {
		my $fd = $1;

		if ($OPENFILE{$fd} ne "") {
			print "File handle leak ($fd) on line ${line} opened on line $OPENFILE{$fd}: $_";
		}
		$OPENFILE{$fd} = $line;
	}
	if (!/SafeFile/ && /^open[\s\t\(]+[\s\t]*([^\,]+)*[\s\t]*/) {
		my $fd = $1;

		if ($OPENFILE{$fd} ne "") {
			print "File handle leak ($fd) on line ${line} opened on line $OPENFILE{$fd}: $_";
		}
		$OPENFILE{$fd} = $line;
	}
	if (/(\S+)[\s\t]*\=[\s\t]*SafeFile::safeopen[\s\t]*\([\s\t]*([^\,]+)[\s\t]*/) {
		my $lock = $1;
		my $fd = $2;

		if ($fd !~ /\\\*/) {
			$fd = '\*' . $fd;
			print "File Handle ${fd} not escaped in safeopen call line ${line}: $_";
		}

		$SAFEOPENFILE{$fd} = $line;
		$SAFEOPENFILE{$fd}{$lock} = $line;
	}
	if (!/SafeFile/ && /close[\s\t]*\(*[\s\t]*([^\;)]+)*/) {
		my $fd = $1;
		
		if ($OPENFILE{$fd} eq "") {
			print "Close called on filehandle $fd when not open at line ${line}: $_";
		}
		
		delete $OPENFILE{$fd};
	}
	if (/SafeFile::safeclose[\s\t]*\([\s\t]*([^\,]+)[\s\t]*\,[\s\t]*([^\)]+)/) {
		my $fd = $1;
		my $lock = $2;

		if ($fd !~ /\\\*/) {
			$fd = '\*' . $fd;
			print "File Handle ${fd} not escaped in safeclose call line ${line}: $_";
		}

		if ($SAFEOPENFILE{$fd}{$lock} eq "") {
			print "Lock var ${lock} mismatch for safeclose call at line ${line}: $_";
		}

		if ($SAFEOPENFILE{$fd} eq "") {
			print "safeclose called on filehandle $fd when not open at line ${line}: $_";
		}

		delete $SAFEOPENFILE{$fd};
	}
}


foreach my $fd (keys %SAFEOPENFILE) {
	foreach my $lock (keys %{$SAFEOPENFILE{$fd}}) {
		print "safeopen never closed for $fd ($lock) at line $SAFEOPENFILE{$fd}{$lock}\n";
	}
}


foreach my $fd (keys %OPENFILE) {
	print "open never closed for $fd at line $OPENFILE{$fd}\n";
}