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
--- 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) {
_______________________________________________
Visit http://www.mimedefang.org and http://www.canit.ca
MIMEDefang mailing list
[EMAIL PROTECTED]
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to