[proftpd-mod-clamav] 05/05: Cleaned obsolete patch
Francesco Lovergine
frankie at moszumanska.debian.org
Sun Feb 5 17:50:45 GMT 2017
This is an automated email from the git hooks/post-receive script.
frankie pushed a commit to branch master
in repository proftpd-mod-clamav.
commit a8b0b4b61ac72cd63f661b1977e6eeecc6970a05
Author: Francesco Paolo Lovergine <frankie at debian.org>
Date: Sun Feb 5 18:45:01 2017 +0100
Cleaned obsolete patch
---
debian/patches/cleanup | 390 -------------------------------------------------
debian/patches/series | 1 -
2 files changed, 391 deletions(-)
diff --git a/debian/patches/cleanup b/debian/patches/cleanup
deleted file mode 100644
index d4152ae..0000000
--- a/debian/patches/cleanup
+++ /dev/null
@@ -1,390 +0,0 @@
-Index: proftpd-mod-clamav/mod_clamav.c
-===================================================================
---- proftpd-mod-clamav.orig/mod_clamav.c 2011-04-20 17:38:03.000000000 +0200
-+++ proftpd-mod-clamav/mod_clamav.c 2011-10-12 15:30:48.000000000 +0200
-@@ -29,12 +29,12 @@
- #include "conf.h"
- #include "privs.h"
- #include <libgen.h>
--#include "mod_clamav.h"
-
- /**
- * Module version and declaration
- */
- #define MOD_CLAMAV_VERSION "mod_clamav/0.10"
-+
- module clamav_module;
-
- /**
-@@ -50,11 +50,13 @@
- * Local declarations
- */
- static unsigned long parse_nbytes(char *nbytes_str, char *units_str);
-+static int clamavd_connect(void);
-+static int clamavd_scan(int, const char *, const char *);
-
- /**
- * Read the returned information from Clamavd.
- */
--int clamavd_result(int sockd, const char *abs_filename, const char *rel_filename) {
-+static int clamavd_result(int sockd, const char *abs_filename, const char *rel_filename) {
- int infected = 0, waserror = 0, ret;
- char buff[4096], *pt, *pt1;
- FILE *fd = 0;
-@@ -65,15 +67,26 @@
- errno);
- return -1;
- }
--
-- if (fgets(buff, sizeof(buff), fd)) {
-+
-+ memset(buff, '\0', sizeof(buff));
-+ if (fgets(buff, sizeof(buff)-1, fd)) {
- if (strstr(buff, "FOUND\n")) {
- ++infected;
--
-- pt = strrchr(buff, ':');
-- if (pt)
-- *pt = 0;
--
-+
-+ /* Advance past the <id> portion of the response,
-+ * and the path name, and the colon and space that
-+ * follow the path name.
-+ */
-+ pt = strchr(buff, ':');
-+ pt++;
-+ pt += strlen(abs_filename);
-+ pt += 3;
-+
-+ pt1 = strchr(pt, '(');
-+ if (pt1 != NULL) {
-+ *pt1 = '\0';
-+ }
-+
- /* Delete the infected upload */
- if ((ret=pr_fsio_unlink(rel_filename))!=0) {
- pr_log_pri(PR_LOG_ERR,
-@@ -81,20 +94,14 @@
- errno, strerror(errno));
- }
-
-- /* clean up the response */
-- pt += 2;
-- pt1 = strstr(pt, " FOUND");
-- if (pt1) {
-- *pt1 = 0;
-- }
--
- /* Inform the client the file contained a virus */
- pr_response_add_err(R_550, "Virus Detected and Removed: %s", pt);
-
- /* Log the fact */
- pr_log_pri(PR_LOG_ERR,
- MOD_CLAMAV_VERSION ": Virus '%s' found in '%s'", pt, abs_filename);
-- } else if (strstr(buff, "ERROR\n")) {
-+ } else if (strstr(buff, "ERROR\n") != NULL ||
-+ strstr(buff, "UNKNOWN COMMAND") != NULL) {
- pr_log_pri(PR_LOG_ERR, MOD_CLAMAV_VERSION ": Clamd Error: %s", buff);
- waserror = 1;
- }
-@@ -106,8 +113,8 @@
- /**
- * Start a session with Clamavd.
- */
--int clamavd_session_start(int sockd) {
-- if (sockd != -1 && write(sockd, "SESSION\n", 8) <= 0) {
-+static int clamavd_session_start(int sockd) {
-+ if (sockd != -1 && write(sockd, "nIDSESSION\n", 11) <= 0) {
- pr_log_pri(PR_LOG_ERR,
- MOD_CLAMAV_VERSION ": error: Clamd didn't accept the session request.");
- return -1;
-@@ -118,8 +125,8 @@
- /**
- * End session.
- */
--int clamavd_session_stop(int sockd) {
-- if (sockd != -1 && write(sockd, "END\n", 4) <= 0) {
-+static int clamavd_session_stop(int sockd) {
-+ if (sockd != -1 && write(sockd, "nEND\n", 5) <= 0) {
- pr_log_pri(PR_LOG_INFO,
- MOD_CLAMAV_VERSION ": info: Clamd didn't accept the session end request.");
- return -1;
-@@ -130,7 +137,7 @@
- /**
- * Test the connection with Clamd.
- */
--int clamavd_connect_check(int sockd) {
-+static int clamavd_connect_check(int sockd) {
- FILE *fd = NULL;
- char buff[32];
-
-@@ -138,8 +145,8 @@
- return 0;
-
- if (write(sockd, "PING\n", 5) <= 0) {
-- pr_log_debug(DEBUG4, "Clamd did not accept PING (%d): %s",
-- errno, strerror(errno));
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION
-+ ": Clamd did not accept PING (%d): %s", errno, strerror(errno));
- close(sockd);
- clamd_sockd = -1;
- clam_errno = errno;
-@@ -147,7 +154,7 @@
- }
-
- if ((fd = fdopen(dup(sockd), "r")) == NULL) {
-- pr_log_debug(DEBUG4, "Clamd can not open descriptor for reading (%d): %s",
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": Clamd can not open descriptor for reading (%d): %s",
- errno, strerror(errno));
- close(sockd);
- clamd_sockd = -1;
-@@ -160,10 +167,10 @@
- fclose(fd);
- return 1;
- }
-- pr_log_debug(DEBUG4, "Clamd return unknown response to PING: '%s'", buff);
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": Clamd return unknown response to PING: '%s'", buff);
- }
-
-- pr_log_debug(DEBUG4, "Clamd did not respond to fgets (%d): %s", errno, strerror(errno));
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": Clamd did not respond to fgets (%d): %s", errno, strerror(errno));
- fclose(fd);
- close(sockd);
- clamd_sockd = -1;
-@@ -174,7 +181,7 @@
- /**
- * Request Clamavd to perform a scan.
- */
--int clamavd_scan(int sockd, const char *abs_filename, const char *rel_filename) {
-+static int clamavd_scan(int sockd, const char *abs_filename, const char *rel_filename) {
- char *scancmd = NULL;
-
- scancmd = calloc(strlen(abs_filename) + 20, sizeof(char));
-@@ -183,22 +190,24 @@
- return -1;
- }
-
-- sprintf(scancmd, "SCAN %s\n", abs_filename);
-+ sprintf(scancmd, "nSCAN %s\n", abs_filename);
-
- if (!clamavd_connect_check(sockd)) {
- if ((clamd_sockd = clamavd_connect()) < 0) {
- pr_log_pri(PR_LOG_ERR,
- MOD_CLAMAV_VERSION ": error: Cannot re-connect to Clamd (%d): %s",
- errno, strerror(errno));
-+ free(scancmd);
-+ scancmd = NULL;
- clam_errno = errno;
- return -1;
- }
- clamavd_session_start(clamd_sockd);
- sockd = clamd_sockd;
-- pr_log_debug(DEBUG4, "Successfully reconnected to Clamd.");
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": Successfully reconnected to Clamd");
- clam_errno = 0;
- }
--
-+
- if (write(sockd, scancmd, strlen(scancmd)) <= 0) {
- pr_log_pri(PR_LOG_ERR,
- MOD_CLAMAV_VERSION ": error: Cannot write to the Clamd socket: %d", errno);
-@@ -216,7 +225,7 @@
- /**
- * Connect a socket to ClamAVd.
- */
--int clamavd_connect(void) {
-+static int clamavd_connect(void) {
- struct sockaddr_un server;
- struct sockaddr_in server2;
- struct hostent *he;
-@@ -314,61 +323,60 @@
- return sockd;
- }
-
--/**
-- * Entry point of mod_xfer during an upload
-- */
--int clamav_scan(cmd_rec *cmd) {
-- char absolutepath[4096];
-- char *file, *rel_file;
-+static int clamav_fsio_close(pr_fh_t *fh, int fd) {
-+ char *abs_path, *rel_path;
- struct stat st;
-+ int do_scan = FALSE;
- config_rec *c = NULL;
- unsigned long *minsize, *maxsize;
--
-+
-+ /* We're only interested in STOR, APPE, and maybe STOU commands. */
-+ if (session.curr_cmd) {
-+ if (strcmp(session.curr_cmd, C_STOR) == 0 ||
-+ strcmp(session.curr_cmd, C_APPE) == 0 ||
-+ strcmp(session.curr_cmd, C_STOU) == 0) {
-+ do_scan = TRUE;
-+ }
-+ }
-+
-+ if (!do_scan) {
-+ return close(fd);
-+ }
-+
-+ /* Make sure the data is written to disk, so that the fstat(2) picks
-+ * up the size properly.
-+ */
-+ if (fsync(fd) < 0) {
-+ return -1;
-+ }
-+
-+ pr_fs_clear_cache();
-+ if (pr_fsio_fstat(fh, &st) < 0) {
-+ return -1;
-+ }
-+
-+ if (close(fd) < 0) {
-+ return -1;
-+ }
-+
- c = find_config(CURRENT_CONF, CONF_PARAM, "ClamAV", FALSE);
- if (!c || !*(int*)(c->argv[0]))
- return 0;
--
-+
- /**
- * Figure out the absolute path of our directory
- */
-- if (session.xfer.path && session.xfer.path_hidden) {
-
-- /* Hidden Store Condition */
-- if (session.chroot_path) {
-- sstrncpy(absolutepath,
-- pdircat(cmd->tmp_pool, session.chroot_path, session.xfer.path_hidden, NULL),
-- sizeof(absolutepath) - 1);
-- pr_log_debug(DEBUG4, "session.chroot_path is '%s'.", session.chroot_path);
-- } else {
-- sstrncpy(absolutepath, session.xfer.path_hidden, sizeof(absolutepath) - 1);
-- }
-- file = absolutepath;
-- rel_file = session.xfer.path_hidden;
--
-- pr_log_debug(DEBUG4, "session.xfer.path_hidden is '%s'.", session.xfer.path_hidden);
-- } else if (session.xfer.path) {
--
-- /* Default Condition */
-- if (session.chroot_path) {
-- sstrncpy(absolutepath, pdircat(cmd->tmp_pool, session.chroot_path, session.xfer.path, NULL),
-- sizeof(absolutepath) - 1);
-- pr_log_debug(DEBUG4, "session.chroot_path is '%s'.", session.chroot_path);
-- } else {
-- sstrncpy(absolutepath, session.xfer.path, sizeof(absolutepath) - 1);
-- }
-- file = absolutepath;
-- rel_file = session.xfer.path;
--
-- pr_log_debug(DEBUG4, "session.xfer.path is '%s'.", session.xfer.path);
-+ if (session.chroot_path) {
-+ abs_path = pdircat(fh->fh_pool, session.chroot_path, fh->fh_path, NULL);
- } else {
--
-- /* Error! */
-- pr_log_pri(PR_LOG_ERR,
-- MOD_CLAMAV_VERSION ": error: 'session.xfer.path' does not contain a valid filename.");
-- pr_response_add_err(R_500, "'session.xfer.path' does not contain a valid filename.");
-- return 1;
-+ abs_path = pstrdup(fh->fh_pool, fh->fh_path);
- }
--
-+
-+ rel_path = pstrdup(fh->fh_pool, fh->fh_path);
-+
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": absolute path is '%s', relative path is '%s'", abs_path, rel_path);
-+
- /**
- * Handle min/max settings
- */
-@@ -384,18 +392,19 @@
-
- if (clamd_minsize > 0 || clamd_maxsize > 0) {
- /* Stat the file to acquire the size */
-- if (pr_fsio_stat(rel_file, &st) == -1) {
-+ pr_fs_clear_cache();
-+ if (pr_fsio_fstat(fh, &st) == -1) {
- pr_log_pri(PR_LOG_ERR, MOD_CLAMAV_VERSION ": error: Can not stat file (%d): %s", errno,
- strerror(errno));
-- return 1;
-+ return -1;
- }
-- pr_log_debug(DEBUG4, "ClamMinSize=%lu ClamMaxSize=%lu Filesize=%" PR_LU, clamd_minsize, clamd_maxsize, (pr_off_t) st.st_size);
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": ClamMinSize=%lu ClamMaxSize=%lu Filesize=%" PR_LU, clamd_minsize, clamd_maxsize, (pr_off_t) st.st_size);
- }
-
- if (clamd_minsize > 0) {
- /* test the minimum size */
- if (st.st_size < clamd_minsize) {
-- pr_log_debug(DEBUG4, "File is too small, skipping virus scan. min = %lu size = %" PR_LU,
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": File is too small, skipping virus scan. min = %lu size = %" PR_LU,
- clamd_minsize, (pr_off_t) st.st_size);
- return 0;
- }
-@@ -404,24 +413,25 @@
- if (clamd_maxsize > 0) {
- /* test the maximum size */
- if (st.st_size > clamd_maxsize) {
-- pr_log_debug(DEBUG4, "File is too large, skipping virus scan. max = %lu size = %" PR_LU,
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": File is too large, skipping virus scan. max = %lu size = %" PR_LU,
- clamd_maxsize, (pr_off_t) st.st_size);
- return 0;
- }
- }
-
-- pr_log_debug(DEBUG4,
-- "Going to virus scan absolute filename = '%s' with relative filename = '%s'.", file, rel_file);
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION
-+ ": Going to virus scan absolute filename = '%s' with relative filename = '%s'.", abs_path, rel_path);
-
- clam_errno = 0;
-- if (clamavd_scan(clamd_sockd, file, rel_file) > 0) {
-- return 1;
-+ if (clamavd_scan(clamd_sockd, abs_path, rel_path) > 0) {
-+ errno = EPERM;
-+ return -1;
- }
-
- if (clam_errno == 0)
-- pr_log_debug(DEBUG4, "No virus detected in filename = '%s'.", file);
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": No virus detected in filename = '%s'.", abs_path);
- else
-- pr_log_debug(DEBUG4, "Skipped virus scan due to errno = %d", clam_errno);
-+ pr_log_debug(DEBUG4, MOD_CLAMAV_VERSION ": Skipped virus scan due to errno = %d", clam_errno);
-
- return 0;
- }
-@@ -634,11 +644,17 @@
- * Start FTP Session
- */
- static int clamav_sess_init(void) {
--
-+ pr_fs_t *fs;
-+
- is_remote = 0; clamd_sockd = -1;
-
- pr_event_register(&clamav_module, "core.exit", clamav_shutdown, NULL);
--
-+
-+ fs = pr_register_fs(main_server->pool, "clamav", "/");
-+ if (fs) {
-+ fs->close = clamav_fsio_close;
-+ }
-+
- return 0;
- }
-
-@@ -661,6 +677,7 @@
- NULL,
- NULL, /* auth function table */
- NULL, /* init function */
-- clamav_sess_init /* session init function */
-+ clamav_sess_init, /* session init function */
-+ MOD_CLAMAV_VERSION
- };
-
diff --git a/debian/patches/series b/debian/patches/series
index 445abe2..e69de29 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +0,0 @@
-#cleanup
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-proftpd/proftpd-mod-clamav.git
More information about the Pkg-proftpd-maintainers
mailing list