[Mimedefang] MIMEDefang 2.42 wantarray correction patch

Michael Haro mharo at bitsurf.net
Thu Apr 8 14:33:19 EDT 2004


I just noticed that mimedefang.pl contains the following...

return (wantarray ? (999, 'swerr', 'tempfail') : 1);

I'm assuming if *_contains_virus_* is called in scalar form it should
return the same $code as if called in array form.

Attached is a patch that corrects this for every instance of wantarray in
the code.

Michael
-------------- next part --------------
--- mimedefang.pl.in.orig	Thu Apr  8 11:18:31 2004
+++ mimedefang.pl.in	Thu Apr  8 11:24:38 2004
@@ -2102,7 +2102,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
     # Run File::Scan
     if ( my $virus = $scanner->scan($path) ) {
@@ -2118,7 +2118,7 @@
 	$CurrentVirusScannerMessage = $msg;
 	md_syslog('err', "$MsgID: entity_contains_virus_filescan: $msg");
 	$VirusScannerMessages .= "$msg\n";
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     } elsif ( $scanner->skipped() ) {
 	# File was skipped due to size, etc.
 	# This occurs when it's not possible for a file to be infected
@@ -2130,7 +2130,7 @@
 	$CurrentVirusScannerMessage = $msg;
 	$VirusScannerMessages .= "$msg\n";
 	$VirusName = 'suspicious';
-	return (wantarray ? (2, 'suspicious', 'quarantine') : 1);
+	return (wantarray ? (2, 'suspicious', 'quarantine') : 2);
     } else {
 	# Entity is clean
 	return (wantarray ? (0, 'ok', 'ok') : 0);
@@ -2181,7 +2181,7 @@
 		$CurrentVirusScannerMessage = $msg;
 		$VirusScannerMessages .= "$msg\n";
 		$VirusName = 'suspicious';
-		return (wantarray ? (2, 'suspicious', 'quarantine') : 1);
+		return (wantarray ? (2, 'suspicious', 'quarantine') : 2);
 	    }
 	} elsif ( my $err = $scanner->error() ) {
 	    # Scanner error
@@ -2190,7 +2190,7 @@
 	    $CurrentVirusScannerMessage = $msg;
 	    md_syslog('err', "$MsgID: message_contains_virus_filescan: $msg");
 	    $VirusScannerMessages .= "$msg\n";
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
     }
     closedir(DIRHANDLE);
@@ -2223,7 +2223,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run uvscan
@@ -2343,7 +2343,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     if (! ($path =~ m+^/+)) {
@@ -2423,7 +2423,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run fsav
@@ -2671,7 +2671,7 @@
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
     if (!defined($entity->bodyhandle->path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
     return scan_file_using_carrier_scan($entity->bodyhandle->path,
 					$host);
@@ -2693,7 +2693,7 @@
 
     if (!opendir(DIR, "./Work")) {
 	md_syslog('err', "message_contains_virus_carrier_scan: Could not open ./Work directory: $!");
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Scan all files in Work
@@ -2910,7 +2910,7 @@
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
     if (!defined($entity->bodyhandle->path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     my $path = $entity->bodyhandle->path;
@@ -2956,7 +2956,7 @@
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
     if (!defined($entity->bodyhandle->path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
     my $sock = IO::Socket::INET->new($host);
     if (defined $sock) {
@@ -2967,11 +2967,11 @@
 	}
 	if (!$sock->print("SCAN $path\n")) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->flush) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	my($output);
 	chomp($output = $sock->getline);
@@ -3008,11 +3008,11 @@
     if (defined $sock) {
 	if (!$sock->print("SCAN $CWD/Work\n")) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->flush) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	my($output);
 	chomp($output = $sock->getline);
@@ -3055,7 +3055,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run antivir
@@ -3134,7 +3134,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run vexira
@@ -3214,7 +3214,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run antivir
@@ -3300,7 +3300,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run clamscan
@@ -3380,7 +3380,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run aveclient
@@ -3488,7 +3488,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run antivir
@@ -3614,7 +3614,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run f-prot
@@ -3720,7 +3720,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run antivir
@@ -3802,7 +3802,7 @@
     # Get filename
     my($path) = $body->path;
     if (!defined($path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
 
     # Run nvcc
@@ -3883,7 +3883,7 @@
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
     if (!defined($entity->bodyhandle->path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
     my $sock = IO::Socket::UNIX->new(Peer => $sophie_sock);
     if (defined $sock) {
@@ -3894,19 +3894,19 @@
 	}
 	if (!$sock->print("$path\n")) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->flush) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	my($output);
 	if (!$sock->sysread($output,256)) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->close) {
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if ($output =~ /^0/) { return (wantarray ? (0, 'ok', 'ok') : 0); }
 	elsif ($output =~ /^1/) {
@@ -3920,12 +3920,12 @@
 	    $errmsg = "$1" if $output =~ /^-1:(.*)$/;
 	    md_syslog('err', "$MsgID: entity_contains_virus_sophie: $errmsg ($path)");
 	    $VirusScannerMessages .= "Sophie error: $errmsg\n";
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	else {
 	    md_syslog('err', "$MsgID: entity_contains_virus_sophie: unknown response - $output ($path)");
 	    $VirusScannerMessages .= "Sophie error: unknown response - $output\n";
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
     }
     # Could not connect to daemon
@@ -3951,20 +3951,20 @@
     if (defined $sock) {
 	if (!$sock->print("$CWD/Work\n")) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->flush) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	my($output, $ans);
 	$ans = $sock->sysread($output, 256);
 	if (!defined($ans)) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->close) {
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if ($output =~ /^0/) { return (wantarray ? (0, 'ok', 'ok') : 0); }
 	elsif ($output =~ /^1/) {
@@ -3978,12 +3978,12 @@
 	    $errmsg = "$1" if $output =~ /^-1:(.*)$/;
 	    md_syslog('err', "$MsgID: message_contains_virus_sophie: $errmsg ($CWD/Work)");
 	    $VirusScannerMessages .= "Sophie error: $errmsg\n";
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	else {
 	    md_syslog('err', "$MsgID: message_contains_virus_sophie: unknown response - $output ($CWD/Work)");
 	    $VirusScannerMessages .= "Sophie error: unknown response - $output\n";
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
     }
     # Could not connect to daemon
@@ -4011,7 +4011,7 @@
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
     if (!defined($entity->bodyhandle->path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
     my $sock = IO::Socket::UNIX->new(Peer => $clamd_sock);
     if (defined $sock) {
@@ -4022,24 +4022,24 @@
 	}
 	if (!$sock->print("SCAN $path\n")) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if (!$sock->flush) {
 	    $sock->close;
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	my($output, $ans);
 	$ans = $sock->sysread($output,256);
 	$sock->close;
 	if (!defined($ans) || !$ans) {
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	if ($output =~ /: (.+) FOUND/) {
 	    $VirusScannerMessages .= "clamd found the $1 virus.\n";
 	    $VirusName = $1;
 	    return (wantarray ? (1, 'virus', 'quarantine') : 1);
 	} elsif ($output =~ /: .+ERROR$/) {
-	    return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	    return (wantarray ? (999, 'swerr', 'tempfail') : 999);
 	}
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
@@ -4134,7 +4134,7 @@
 	return (wantarray ? (0, 'ok', 'ok') : 0);
     }
     if (!defined($entity->bodyhandle->path)) {
-	return (wantarray ? (999, 'swerr', 'tempfail') : 1);
+	return (wantarray ? (999, 'swerr', 'tempfail') : 999);
     }
     my $sock = IO::Socket::UNIX->new(Peer => $trophie_sock);
     if (defined $sock) {


More information about the MIMEDefang mailing list