hi,

we had the same problems with Mail::ClamAV (version 0.17) and clamav 0.90. Attached you will find a simple patch for Mail::Clamav (no modification in clamav). Please note, that I have not realy verified this patch (some deprecated functions and definitions).

Reinhard

René Berber wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Is anybody working on upgrading perl module Mail::ClamAV?

Current version 0.17 does not build under clamav version 0.90, there's at least
2 defined constants that don't exist anymore, maybe other problems.

The real problem will show for users of MailScanner, without a re-build MS spins
creating processes and killing them with no mail being scanned.  I guess there
is the option of using clamscan (or clamdscan with patches to MS).
- --
René Berber
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF0qoAL3NNweKTRgwRAvsuAKCCAA1fR72HpuOEz9FxOs/SpYjJxQCggVrH
kzX2ecImmLRhe3FjzEv2Ze0=
=K5Hl
-----END PGP SIGNATURE-----

_______________________________________________
Help us build a comprehensive ClamAV guide: visit http://wiki.clamav.net
http://lurker.clamav.net/list/clamav-users.html



diff -urNp Mail-ClamAV-0.17.orig/ClamAV.pm Mail-ClamAV-0.17/ClamAV.pm
--- Mail-ClamAV-0.17.orig/ClamAV.pm     2005-03-08 11:07:54.000000000 +0100
+++ Mail-ClamAV-0.17/ClamAV.pm  2007-02-20 14:03:46.000000000 +0100
@@ -26,7 +26,6 @@ our @ISA = qw(Exporter);
 sub CL_RAW            () { CL_SCAN_RAW() }
 sub CL_ARCHIVE        () { CL_SCAN_ARCHIVE() }
 sub CL_MAIL           () { CL_SCAN_MAIL() }
-sub CL_DISABLERAR     () { CL_SCAN_DISABLERAR() }
 sub CL_OLE2           () { CL_SCAN_OLE2() }
 sub CL_ENCRYPTED      () { CL_SCAN_BLOCKENCRYPTED() }
 sub CL_BLOCKENCRYPTED () { CL_SCAN_BLOCKENCRYPTED() }
@@ -50,7 +49,6 @@ our %EXPORT_TAGS = ( 'all' => [ qw(
     CL_EMAXFILES
     CL_ERAR
     CL_EZIP
-    CL_EMALFZIP
     CL_EGZIP
     CL_EBZIP
     CL_EOLE2
@@ -76,7 +74,6 @@ our %EXPORT_TAGS = ( 'all' => [ qw(
     CL_SCAN_RAW
     CL_SCAN_ARCHIVE
     CL_SCAN_MAIL
-    CL_SCAN_DISABLERAR
     CL_SCAN_OLE2
     CL_SCAN_BLOCKENCRYPTED
     CL_SCAN_HTML
@@ -276,7 +273,7 @@ char *clamav_perl_retdbdir()
 void clamav_perl_buildtrie(SV *self)
 {
     struct clamav_perl *c = SvClam(self);
-    cl_buildtrie(c->root);
+    cl_build(c->root);
 }
 
 int clamav_perl_maxreclevel(SV *self, ...)
@@ -344,44 +341,10 @@ int clamav_perl_archivememlim(SV *self, 
     return SvClam(self)->limits.archivememlim;
 }
 
-void clamav_perl__scanbuff(SV *self, SV *buff)
-{
-    struct clamav_perl *c = SvClam(self);
-    STRLEN len;
-    int status;
-    char *b;
-    const char *msg;
-    SV *smsg;
-    Inline_Stack_Vars;
-
-    Inline_Stack_Reset;
-
-    if (SvTAINTED(buff))
-        croak("buff argument specified to scanbuff() is tainted");
-
-    b = SvPV(buff, len);
-    status = cl_scanbuff(b, len, &msg, c->root);
-
-    smsg = sv_newmortal();
-    sv_setiv(smsg, (IV)status);
-
-    /* msg is some random memory if no virus was found */
-    if (status == CL_VIRUS)
-        sv_setpv(smsg, msg);
-    else if (status == CL_CLEAN)
-        sv_setpv(smsg, "Clean");
-    else
-        sv_setpv(smsg, cl_perror(status));
-
-    SvIOK_on(smsg);
-    Inline_Stack_Push(smsg);
-    Inline_Stack_Done;
-}
-
 void DESTROY(SV *self)
 {
     struct clamav_perl *c = SvClam(self);
-    cl_freetrie(c->root);
+    cl_free(c->root);
     if (c->is_dir == 1)
         cl_statfree(&c->st);
     Safefree(c->path);
@@ -415,7 +378,7 @@ void clamav_perl__scanfd(SV *self, int f
     else if (status == CL_CLEAN)
         sv_setpv(smsg, "Clean");
     else
-        sv_setpv(smsg, cl_perror(status));
+        sv_setpv(smsg, cl_strerror(status));
 
     SvIOK_on(smsg);
     Inline_Stack_Push(smsg);
@@ -456,7 +419,7 @@ void clamav_perl__scanfile(SV *self, SV 
     else if (status == CL_CLEAN)
         sv_setpv(smsg, "Clean");
     else
-        sv_setpv(smsg, cl_perror(status));
+        sv_setpv(smsg, cl_strerror(status));
 
     SvIOK_on(smsg);
     Inline_Stack_Push(smsg);
@@ -479,7 +442,7 @@ static void error(int errcode)
     SV *err = get_sv("Mail::ClamAV::Error", TRUE);
 
     sv_setiv(err, (IV)errcode);
-    e = cl_perror(errcode);
+    e = cl_strerror(errcode);
     sv_setpv(err, e);
     SvIOK_on(err);
 }
@@ -494,7 +457,6 @@ int clamav_perl_constant(char *name)
     if (strEQ("CL_EMAXFILES", name)) return CL_EMAXFILES;
     if (strEQ("CL_ERAR", name)) return CL_ERAR;
     if (strEQ("CL_EZIP", name)) return CL_EZIP;
-    if (strEQ("CL_EMALFZIP", name)) return CL_EMALFZIP;
     if (strEQ("CL_EGZIP", name)) return CL_EGZIP;
     if (strEQ("CL_EBZIP", name)) return CL_EBZIP;
     if (strEQ("CL_EOLE2", name)) return CL_EOLE2;
@@ -520,7 +482,6 @@ int clamav_perl_constant(char *name)
     if (strEQ("CL_SCAN_RAW", name)) return CL_SCAN_RAW;
     if (strEQ("CL_SCAN_ARCHIVE", name)) return CL_SCAN_ARCHIVE;
     if (strEQ("CL_SCAN_MAIL", name)) return CL_SCAN_MAIL;
-    if (strEQ("CL_SCAN_DISABLERAR", name)) return CL_SCAN_DISABLERAR;
     if (strEQ("CL_SCAN_OLE2", name)) return CL_SCAN_OLE2;
     if (strEQ("CL_SCAN_BLOCKENCRYPTED", name)) return CL_SCAN_BLOCKENCRYPTED;
     if (strEQ("CL_SCAN_HTML", name)) return CL_SCAN_HTML;
@@ -736,10 +697,6 @@ rar handler error
 
 zip handler error
 
-=item CL_EMALFZIP
-
-malformed zip
-
 =item CL_EGZIP
 
 gzip handler error
diff -urNp Mail-ClamAV-0.17.orig/t/Mail-ClamAV.t 
Mail-ClamAV-0.17/t/Mail-ClamAV.t
--- Mail-ClamAV-0.17.orig/t/Mail-ClamAV.t       2005-03-08 11:06:04.000000000 
+0100
+++ Mail-ClamAV-0.17/t/Mail-ClamAV.t    2007-02-20 14:03:17.000000000 +0100
@@ -20,7 +20,6 @@ foreach my $constname (qw(
     CL_EMAXFILES
     CL_ERAR
     CL_EZIP
-    CL_EMALFZIP
     CL_EGZIP
     CL_EBZIP
     CL_EOLE2
@@ -46,7 +45,6 @@ foreach my $constname (qw(
     CL_SCAN_RAW
     CL_SCAN_ARCHIVE
     CL_SCAN_MAIL
-    CL_SCAN_DISABLERAR
     CL_SCAN_OLE2
     CL_SCAN_BLOCKENCRYPTED
     CL_SCAN_HTML
@@ -59,7 +57,6 @@ foreach my $constname (qw(
     CL_RAW
     CL_ARCHIVE
     CL_MAIL
-    CL_DISABLERAR
     CL_OLE2
     CL_BLOCKENCRYPTED
     CL_HTML
_______________________________________________
Help us build a comprehensive ClamAV guide: visit http://wiki.clamav.net
http://lurker.clamav.net/list/clamav-users.html

Reply via email to