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