Package: python-clamav
Version: 0.4.1-1+b1
Severity: normal

This package needs to be updated to support the new clamav release 
(clamav 0.95/libclamav6). Proposed NMU diff is attached.

-- System Information:
Debian Release: 5.0.1
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.26-2-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages python-clamav depends on:
ii  clamav-freshclam [cl 0.94.dfsg.2-1lenny2 anti-virus utility for Unix - viru
ii  libc6                2.7-18              GNU C Library: Shared libraries
ii  libclamav5           0.94.dfsg.2-1lenny2 anti-virus utility for Unix - libr
ii  python               2.5.2-3             An interactive high-level object-o
ii  python-support       0.8.4               automated rebuilding support for P

python-clamav recommends no packages.

python-clamav suggests no packages.

-- no debconf information
diff -u python-clamav-0.4.1/debian/changelog python-clamav-0.4.1/debian/changelog
--- python-clamav-0.4.1/debian/changelog
+++ python-clamav-0.4.1/debian/changelog
@@ -1,3 +1,13 @@
+python-clamav (0.4.1-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Build against libclamav6/clamav 0.95
+    - modified pyclamav.c source to use the new API functions 
+    - cleaned up some old code for clamav 0.75
+    - updated Build-Depends
+
+ -- Imre Gergely <[email protected]>  Sat, 18 Apr 2009 17:00:51 +0300
+
 python-clamav (0.4.1-1) unstable; urgency=low
 
   * New upstream release
diff -u python-clamav-0.4.1/debian/control python-clamav-0.4.1/debian/control
--- python-clamav-0.4.1/debian/control
+++ python-clamav-0.4.1/debian/control
@@ -2,7 +2,7 @@
 Section: python
 Priority: optional
 Maintainer: Cédric Delfosse <[email protected]>
-Build-Depends: debhelper (>= 5.0.37.2), libclamav-dev, python (>= 2.3.5-11), python-support (>= 0.3), python-all-dev
+Build-Depends: debhelper (>= 5.0.37.2), libclamav-dev (>= 0.95), python (>= 2.3.5-11), python-support (>= 0.3), python-all-dev
 Standards-Version: 3.7.3
 
 Package: python-clamav
only in patch2:
unchanged:
--- python-clamav-0.4.1.orig/pyclamav.c
+++ python-clamav-0.4.1/pyclamav.c
@@ -33,25 +33,6 @@
 
 /* ********************************************************* */
 
-/* To be able to compile with 
-   releases 0.75 of libclamav 
-
-   Where cl_free was cl_freetrie
-   and cl_build was cl_buildtrie
-   CL_SCAN_STDOPT did not exist
-*/
-#ifndef CL_SCAN_STDOPT
-#define CL_SCAN_STDOPT CL_RAW | CL_ARCHIVE | CL_MAIL | CL_DISABLERAR | CL_OLE2 | CL_ENCRYPTED
-void cl_free(struct cl_node *rootnode) {
-  cl_freetrie(rootnode);  
-  return;    
-} 
-
-int cl_build(struct cl_node *rootnode) {  
-  return cl_buildtrie(rootnode);    
-} 
-#endif
-
 /* For python prior to 2.3 */
 #ifndef PyMODINIT_FUNC
 #define PyMODINIT_FUNC void
@@ -68,11 +49,9 @@
 unsigned int signumber = 0;
  
 /* Structures for clamav */
-struct cl_node *root = NULL;
-struct cl_limits limits;
+struct cl_engine *engine = NULL;
 struct cl_stat dbstat;
 
-
 /*
  * If the virus database has been changed, then
  * free the current tree and reload the new one
@@ -85,22 +64,22 @@
   /* If yes : reload DB                */
   if (cl_statchkdir(&dbstat) == 1)
     {
-      /* free the tree */
-      cl_free(root); 
+      /* free the engine */
+      cl_engine_free(engine); 
       signumber=0;
-      root=NULL;
+      engine=NULL;
 
       /* Load DB */
-      if((ret = cl_load(cl_retdbdir(), &root, &signumber, CL_DB_STDOPT))) {
+      if((ret = cl_load(cl_retdbdir(), engine, &signumber, CL_DB_STDOPT)) != CL_SUCCESS) {
 	/* Raise exception with error message */
 	PyErr_SetString(PyclamavError,  cl_strerror(ret));
 	return -2;
       }
 
-      /* build the final tree */
-      if((ret = cl_build(root))) {
-	/* free the partial tree */
-	cl_free(root); 
+      /* prepare the engine */
+      if((ret = cl_engine_compile(engine))) {
+	/* free the engine */
+	cl_engine_free(engine); 
 	/* Raise exception with error message */
 	PyErr_SetString(PyclamavError, cl_strerror(ret));
 	return -2;
@@ -231,7 +210,7 @@
     return NULL;     
   }
 
-  ret = cl_scanfile(file_to_scan, &virname, &size, root, &limits, CL_SCAN_STDOPT);
+  ret = cl_scanfile(file_to_scan, &virname, &size, engine, CL_SCAN_STDOPT);
 
   /* Test return code */
   switch (ret) {
@@ -278,17 +257,21 @@
   /* Set documentation string for the module */
   PyDict_SetItemString(dict, "__doc__", PyString_FromString("pyclamav :\n\n  This is a python binding to the C libclamav library\n  (from the Clamav project - http://www.clamav.net).\n  It can be used to easily allow a Python script to scan\n  a file or a buffer against known viruses.\n\nAuthor : Alexandre Norman [[email protected]]\n\nfunctions :\n  - scanfile(string filename) : Scan a file for virus.\n  - get_numsig() : Return the number of known signatures.\n  - get_version() : Return the version of Clamav.\n  - version() : Return the version of pyclamav.\n"));
 
+  /* initialize libclamav */
+  cl_init(CL_INIT_DEFAULT);
+  engine = cl_engine_new();
 
-  if((ret = cl_load(cl_retdbdir(), &root, &signumber, CL_DB_STDOPT))) {
+  if((ret = cl_load(cl_retdbdir(), engine, &signumber, CL_DB_STDOPT))) {
     /* Raise exception with error message */
     PyErr_SetString(PyclamavError,  cl_strerror(ret));
+    cl_engine_free(engine);
     return;
   }
 
-  /* build the final tree */
-  if((ret = cl_build(root))) {
-    /* free the partial tree */
-    cl_free(root); 
+  /* prepare the engine */
+  if((ret = cl_engine_compile(engine)) != CL_SUCCESS) {
+    /* free up the engine resources */
+    cl_engine_free(engine); 
     /* Raise exception with error message */
     PyErr_SetString(PyclamavError, cl_strerror(ret));
     return;
@@ -299,15 +282,6 @@
   memset(&dbstat, 0, sizeof(struct cl_stat));
   cl_statinidir(cl_retdbdir(), &dbstat);
 
-
-
-  /* set up archive limits */
-  memset(&limits, 0, sizeof(struct cl_limits));
-  limits.maxfiles = 1000; /* max files */
-  limits.maxfilesize = 10 * 1048576; /* maximal archived file size == 10 Mb */
-  limits.maxreclevel = 5; /* maximal recursion level */
-  limits.archivememlim = 0; /* disable memory limit for bzip2 scanner */
-
   return ;
 }
 

Reply via email to