From 0a7e092cae02ba41d5550a58b32f963c68300263 Mon Sep 17 00:00:00 2001 From: Paul Howarth Date: Aug 01 2012 11:44:53 +0000 Subject: Update to 1.3.4b - New upstream release 1.3.4b: - Fixed mod_ldap segfault on login when LDAPUsers with no filters used - Fixed sporadic SFTP upload issues for large files - Fixed SSH2 handling for some clients (e.g. OpenVMS) - New FactsOptions directive; see doc/modules/mod_facts.html#FactsOptions - Fixed build errors on Tru64, AIX, Cygwin - Lots of bugs fixed - see NEWS for details - No bzipped tarball release this time, so revert to gzipped one - Drop patches for fixes included in upstream release --- diff --git a/.gitignore b/.gitignore index 10951cb..70973b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,5 @@ -# master -/proftpd-1.3.4a.tar.bz2 -/proftpd-mod-geoip-0.3.tar.gz -/proftpd-mod-vroot-0.9.2.tar.gz -/Test-Unit-0.14.tar.gz -# f16/f15 -/proftpd-1.3.4.tar.bz2 +# master/f17/f16 +/proftpd-1.3.4b.tar.gz /proftpd-mod-geoip-0.3.tar.gz /proftpd-mod-vroot-0.9.2.tar.gz /Test-Unit-0.14.tar.gz @@ -12,7 +7,7 @@ /proftpd-1.3.3g.tar.bz2 /proftpd-mod-geoip-0.2.tar.gz /proftpd-mod-vroot-0.9.2.tar.gz -# f14/el5/el4 +# el5 /proftpd-1.3.3g.tar.bz2 /proftpd-mod-geoip-0.2.tar.gz /proftpd-mod-vroot-0.8.5.tar.gz diff --git a/proftpd-1.3.4a-bug3714.patch b/proftpd-1.3.4a-bug3714.patch deleted file mode 100644 index cebc7b2..0000000 --- a/proftpd-1.3.4a-bug3714.patch +++ /dev/null @@ -1,49 +0,0 @@ -Index: src/cmd.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/src/cmd.c,v -retrieving revision 1.8 -diff -u -r1.8 cmd.c ---- src/cmd.c 23 May 2011 21:22:24 -0000 1.8 -+++ src/cmd.c 16 Nov 2011 19:57:43 -0000 -@@ -245,8 +245,13 @@ - } - - res = pr_table_get(cmd->notes, "displayable-str", NULL); -- if (res) -+ if (res) { -+ if (str_len != NULL) { -+ *str_len = strlen(res); -+ } -+ - return res; -+ } - - argc = cmd->argc; - argv = cmd->argv; -Index: src/main.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/src/main.c,v -retrieving revision 1.437 -diff -u -r1.437 main.c ---- src/main.c 9 Nov 2011 17:32:35 -0000 1.437 -+++ src/main.c 16 Nov 2011 19:57:43 -0000 -@@ -318,7 +318,18 @@ - - /* The client has successfully authenticated... */ - if (session.user) { -- char *args = memchr(cmdargstr, ' ', cmdargstrlen); -+ char *args = NULL; -+ -+ /* Be defensive, and check whether cmdargstrlen has a value. -+ * If it's zero, assume we need to use strchr(3), rather than -+ * memchr(2); see Bug#3714. -+ */ -+ if (cmdargstrlen > 0) { -+ args = memchr(cmdargstr, ' ', cmdargstrlen); -+ -+ } else { -+ args = strchr(cmdargstr, ' '); -+ } - - pr_scoreboard_entry_update(session.pid, - PR_SCORE_CMD, "%s", cmd->argv[0], NULL, NULL); diff --git a/proftpd-1.3.4a-bug3715.patch b/proftpd-1.3.4a-bug3715.patch deleted file mode 100644 index f01972f..0000000 --- a/proftpd-1.3.4a-bug3715.patch +++ /dev/null @@ -1,55 +0,0 @@ -Index: modules/mod_facts.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_facts.c,v -retrieving revision 1.45 -diff -u -r1.45 mod_facts.c ---- modules/mod_facts.c 23 May 2011 21:11:56 -0000 1.45 -+++ modules/mod_facts.c 16 Nov 2011 23:42:05 -0000 -@@ -1034,13 +1034,19 @@ - c = find_config(get_dir_ctxt(cmd->tmp_pool, (char *) best_path), CONF_PARAM, - "DirFakeUser", FALSE); - if (c) { -- const char *fake_user; -+ const char *fake_user = NULL; - -- fake_user = c->argv[0]; -- if (strncmp(fake_user, "~", 2) != 0) { -- fake_uid = pr_auth_name2uid(cmd->tmp_pool, fake_user); -+ if (c->argc > 0) { -+ fake_user = c->argv[0]; -+ if (strncmp(fake_user, "~", 2) != 0) { -+ fake_uid = pr_auth_name2uid(cmd->tmp_pool, fake_user); -+ -+ } else { -+ fake_uid = session.uid; -+ } - - } else { -+ /* Handle the "DirFakeUser off" case (Bug#3715). */ - fake_uid = session.uid; - } - } -@@ -1048,13 +1054,19 @@ - c = find_config(get_dir_ctxt(cmd->tmp_pool, (char *) best_path), CONF_PARAM, - "DirFakeGroup", FALSE); - if (c) { -- const char *fake_group; -+ const char *fake_group = NULL; - -- fake_group = c->argv[0]; -- if (strncmp(fake_group, "~", 2) != 0) { -- fake_gid = pr_auth_name2gid(cmd->tmp_pool, fake_group); -+ if (c->argc > 0) { -+ fake_group = c->argv[0]; -+ if (strncmp(fake_group, "~", 2) != 0) { -+ fake_gid = pr_auth_name2gid(cmd->tmp_pool, fake_group); -+ -+ } else { -+ fake_gid = session.gid; -+ } - - } else { -+ /* Handle the "DirFakeGroup off" case (Bug#3715). */ - fake_gid = session.gid; - } - } diff --git a/proftpd-1.3.4a-bug3717.patch b/proftpd-1.3.4a-bug3717.patch deleted file mode 100644 index 589f366..0000000 --- a/proftpd-1.3.4a-bug3717.patch +++ /dev/null @@ -1,147 +0,0 @@ -Index: contrib/mod_tls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_tls.c,v -retrieving revision 1.262 -diff -u -r1.262 mod_tls.c ---- contrib/mod_tls.c 11 Nov 2011 23:14:13 -0000 1.262 -+++ contrib/mod_tls.c 17 Nov 2011 21:26:30 -0000 -@@ -1941,13 +1941,13 @@ - k = (tls_pkey_t *) data; - - if ((k->flags & TLS_PKEY_USE_RSA) && k->rsa_pkey) { -- strncpy(buf, k->rsa_pkey, buflen); -+ sstrncpy(buf, k->rsa_pkey, buflen); - buf[buflen - 1] = '\0'; - return strlen(buf); - } - - if ((k->flags & TLS_PKEY_USE_DSA) && k->dsa_pkey) { -- strncpy(buf, k->dsa_pkey, buflen); -+ sstrncpy(buf, k->dsa_pkey, buflen); - buf[buflen - 1] = '\0'; - return strlen(buf); - } -Index: contrib/mod_sftp/keys.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_sftp/keys.c,v -retrieving revision 1.16 -diff -u -r1.16 keys.c ---- contrib/mod_sftp/keys.c 23 May 2011 21:03:12 -0000 1.16 -+++ contrib/mod_sftp/keys.c 17 Nov 2011 21:26:30 -0000 -@@ -718,7 +718,7 @@ - k = (struct sftp_pkey *) d; - - if (k->host_pkey) { -- strncpy(buf, k->host_pkey, buflen); -+ sstrncpy(buf, k->host_pkey, buflen); - buf[buflen - 1] = '\0'; - return strlen(buf); - } -Index: lib/pr-syslog.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/lib/pr-syslog.c,v -retrieving revision 1.24 -diff -u -r1.24 pr-syslog.c ---- lib/pr-syslog.c 1 May 2011 04:32:27 -0000 1.24 -+++ lib/pr-syslog.c 17 Nov 2011 21:26:30 -0000 -@@ -324,17 +324,17 @@ - * hold more data than 14 bytes, so... - */ - if (sizeof(syslog_addr.sa_data) >= (strlen(PR_PATH_LOG) + 1)) { -- strncpy(syslog_addr.sa_data, PR_PATH_LOG, sizeof(syslog_addr.sa_data)); -+ sstrncpy(syslog_addr.sa_data, PR_PATH_LOG, sizeof(syslog_addr.sa_data)); - syslog_addr.sa_data[sizeof(syslog_addr.sa_data)-1] = '\0'; - addrlen = sizeof(syslog_addr); - - } else { -- strncpy(syslog_addr.sa_data, PR_PATH_LOG, strlen(PR_PATH_LOG) + 1); -+ sstrncpy(syslog_addr.sa_data, PR_PATH_LOG, strlen(PR_PATH_LOG) + 1); - addrlen = sizeof(syslog_addr) + - ((strlen(PR_PATH_LOG) + 1) - sizeof(syslog_addr.sa_data)); - } - # else -- strncpy(syslog_addr.sa_data, PR_PATH_LOG, sizeof(syslog_addr.sa_data)); -+ sstrncpy(syslog_addr.sa_data, PR_PATH_LOG, sizeof(syslog_addr.sa_data)); - syslog_addr.sa_data[sizeof(syslog_addr.sa_data)-1] = '\0'; - addrlen = sizeof(syslog_addr); - # endif /* !Mac OSX */ -Index: lib/pwgrent.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/lib/pwgrent.c,v -retrieving revision 1.16 -diff -u -r1.16 pwgrent.c ---- lib/pwgrent.c 23 May 2011 21:08:34 -0000 1.16 -+++ lib/pwgrent.c 17 Nov 2011 21:26:30 -0000 -@@ -62,7 +62,7 @@ - buffer = pwdbuf; - pwd = &pwent; - -- strncpy(buffer, buf, BUFSIZ-1); -+ sstrncpy(buffer, buf, BUFSIZ-1); - buffer[BUFSIZ-1] = '\0'; - - for(cp = buffer, i = 0; i < NPWDFIELDS && cp; i++) { -Index: modules/mod_auth_file.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_auth_file.c,v -retrieving revision 1.40 -diff -u -r1.40 mod_auth_file.c ---- modules/mod_auth_file.c 23 May 2011 21:11:56 -0000 1.40 -+++ modules/mod_auth_file.c 17 Nov 2011 21:26:30 -0000 -@@ -109,7 +109,7 @@ - buffer = pwdbuf; - pwd = &pwent; - -- strncpy(buffer, buf, BUFSIZ-1); -+ sstrncpy(buffer, buf, BUFSIZ-1); - buffer[BUFSIZ-1] = '\0'; - - for (cp = buffer, i = 0; i < NPWDFIELDS && cp; i++) { -Index: modules/mod_ctrls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_ctrls.c,v -retrieving revision 1.50 -diff -u -r1.50 mod_ctrls.c ---- modules/mod_ctrls.c 31 Jul 2011 22:07:03 -0000 1.50 -+++ modules/mod_ctrls.c 17 Nov 2011 21:26:30 -0000 -@@ -486,7 +486,7 @@ - memset(&sock, 0, sizeof(sock)); - - sock.sun_family = AF_UNIX; -- strncpy(sock.sun_path, sock_file, strlen(sock_file)); -+ sstrncpy(sock.sun_path, sock_file, strlen(sock_file)); - - len = sizeof(sock); - -Index: src/ctrls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/src/ctrls.c,v -retrieving revision 1.30 -diff -u -r1.30 ctrls.c ---- src/ctrls.c 5 Jun 2011 22:45:14 -0000 1.30 -+++ src/ctrls.c 17 Nov 2011 21:26:30 -0000 -@@ -982,7 +982,7 @@ - memset(&ctrl_sock, 0, sizeof(ctrl_sock)); - - ctrl_sock.sun_family = AF_UNIX; -- strncpy(ctrl_sock.sun_path, socket_file, strlen(socket_file)); -+ sstrncpy(ctrl_sock.sun_path, socket_file, strlen(socket_file)); - len = sizeof(ctrl_sock); - - if (connect(sockfd, (struct sockaddr *) &ctrl_sock, len) < 0) { -Index: utils/ftptop.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/utils/ftptop.c,v -retrieving revision 1.42 -diff -u -r1.42 ftptop.c ---- utils/ftptop.c 23 May 2011 20:46:20 -0000 1.42 -+++ utils/ftptop.c 17 Nov 2011 21:26:30 -0000 -@@ -524,7 +524,7 @@ - exit(1); - } - -- strncpy(ftp_sessions[ftp_nsessions++], buf, strlen(buf) + 1); -+ util_sstrncpy(ftp_sessions[ftp_nsessions++], buf, strlen(buf) + 1); - } - - scoreboard_close(); diff --git a/proftpd-1.3.4a-bug3719.patch b/proftpd-1.3.4a-bug3719.patch deleted file mode 100644 index d4f363b..0000000 --- a/proftpd-1.3.4a-bug3719.patch +++ /dev/null @@ -1,31 +0,0 @@ -Index: modules/mod_ls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_ls.c,v -retrieving revision 1.190 -diff -u -r1.190 mod_ls.c ---- modules/mod_ls.c 19 Nov 2011 02:40:12 -0000 1.190 -+++ modules/mod_ls.c 21 Nov 2011 21:56:05 -0000 -@@ -460,6 +460,11 @@ - - m[len] = '\0'; - -+ /* If the symlink points to either '.' or '..', skip it (Bug#3719). */ -+ if (is_dotdir(m)) { -+ return 0; -+ } -+ - if (!ls_perms_full(p, cmd, m, NULL)) { - return 0; - } -@@ -478,6 +483,11 @@ - - l[len] = '\0'; - -+ /* If the symlink points to either '.' or '..', skip it (Bug#3719). */ -+ if (is_dotdir(l)) { -+ return 0; -+ } -+ - if (!ls_perms_full(p, cmd, l, &hidden)) { - return 0; - } diff --git a/proftpd-1.3.4a-bug3723.patch b/proftpd-1.3.4a-bug3723.patch deleted file mode 100644 index 30457b1..0000000 --- a/proftpd-1.3.4a-bug3723.patch +++ /dev/null @@ -1,86 +0,0 @@ -Index: modules/mod_memcache.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_memcache.c,v -retrieving revision 1.15 -diff -u -r1.15 mod_memcache.c ---- modules/mod_memcache.c 23 May 2011 21:11:56 -0000 1.15 -+++ modules/mod_memcache.c 1 Dec 2011 00:54:11 -0000 -@@ -41,6 +41,8 @@ - module memcache_module; - - static int memcache_logfd = -1; -+static pool *memcache_pool = NULL; -+static array_header *memcache_server_lists = NULL; - - /* Configuration handlers - */ -@@ -174,7 +176,7 @@ - config_rec *c; - char *str = ""; - int ctxt; -- memcached_server_st *memcache_servers; -+ memcached_server_st *memcache_servers = NULL; - - if (cmd->argc-1 < 1) { - CONF_ERROR(cmd, "wrong number of parameters"); -@@ -204,6 +206,9 @@ - } - - c->argv[0] = memcache_servers; -+ -+ /* Add the libmemcached-allocated pointer to a list, for later freeing. */ -+ *((memcached_server_st **) push_array(memcache_server_lists)) = memcache_servers; - return PR_HANDLED(cmd); - } - -@@ -281,19 +286,27 @@ - } - - static void mcache_restart_ev(const void *event_data, void *user_data) { -- server_rec *s; -+ register unsigned int i; -+ memcached_server_st **mcache_servers = NULL; - -- for (s = (server_rec *) server_list->xas_list; s; s = s->next) { -- config_rec *c; -+ mcache_servers = memcache_server_lists->elts; -+ for (i = 0; i < memcache_server_lists->nelts; i++) { -+ memcached_server_list_free(mcache_servers[i]); -+ } - -- c = find_config(s->conf, CONF_PARAM, "MemcacheServers", FALSE); -- if (c) { -- memcached_server_st *memcache_servers; -+ /* Make sure to clear the pointer in the Memcache API as well, to prevent -+ * a dangling pointer situation. -+ */ -+ memcache_set_servers(NULL); - -- memcache_servers = c->argv[0]; -- memcached_server_list_free(memcache_servers); -- } -- } -+ /* Now we can recycle the mod_memcache pool and its associated resources. */ -+ destroy_pool(memcache_pool); -+ -+ memcache_pool = make_sub_pool(permanent_pool); -+ pr_pool_tag(memcache_pool, MOD_MEMCACHE_VERSION); -+ -+ memcache_server_lists = make_array(memcache_pool, 2, -+ sizeof(memcached_server_st **)); - } - - /* Initialization functions -@@ -302,6 +315,12 @@ - static int mcache_init(void) { - const char *version; - -+ memcache_pool = make_sub_pool(permanent_pool); -+ pr_pool_tag(memcache_pool, MOD_MEMCACHE_VERSION); -+ -+ memcache_server_lists = make_array(memcache_pool, 2, -+ sizeof(memcached_server_st **)); -+ - memcache_init(); - - pr_event_register(&memcache_module, "core.restart", mcache_restart_ev, NULL); diff --git a/proftpd-1.3.4a-bug3724.patch b/proftpd-1.3.4a-bug3724.patch deleted file mode 100644 index 96c6ced..0000000 --- a/proftpd-1.3.4a-bug3724.patch +++ /dev/null @@ -1,20 +0,0 @@ -Index: contrib/mod_quotatab.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_quotatab.c,v -retrieving revision 1.77 -diff -u -r1.77 mod_quotatab.c ---- contrib/mod_quotatab.c 23 Nov 2011 18:04:37 -0000 1.77 -+++ contrib/mod_quotatab.c 5 Dec 2011 19:49:15 -0000 -@@ -3940,7 +3940,11 @@ - static void quotatab_mod_unload_ev(const void *event_data, void *user_data) { - if (strcmp("mod_quotatab.c", (const char *) event_data) == 0) { - pr_event_unregister("atab_module, NULL, NULL); -- pr_regex_free(NULL, quota_exclude_pre); -+ -+ if (quota_exclude_pre != NULL) { -+ pr_regexp_free(NULL, quota_exclude_pre); -+ quota_exclude_pre = NULL; -+ } - - if (quotatab_pool) { - destroy_pool(quotatab_pool); diff --git a/proftpd-1.3.4a-bug3726.patch b/proftpd-1.3.4a-bug3726.patch deleted file mode 100644 index 3cc6ed4..0000000 --- a/proftpd-1.3.4a-bug3726.patch +++ /dev/null @@ -1,36 +0,0 @@ -Index: contrib/mod_exec.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_exec.c,v -retrieving revision 1.24 -diff -u -r1.24 mod_exec.c ---- contrib/mod_exec.c 12 Dec 2011 19:22:37 -0000 1.24 -+++ contrib/mod_exec.c 13 Dec 2011 21:29:25 -0000 -@@ -626,7 +626,7 @@ - - (void) close(exec_stderr_pipe[1]); - exec_stderr_pipe[1] = -1; -- -+ - if ((exec_opts & EXEC_OPT_LOG_STDOUT) || - (exec_opts & EXEC_OPT_LOG_STDERR) || - (exec_opts & EXEC_OPT_SEND_STDOUT) || -@@ -636,7 +636,10 @@ - struct timeval tv; - time_t start_time = time(NULL); - -- res = waitpid(pid, &status, WNOHANG); -+ /* We set the result value to zero initially, so that at least one -+ * pass through the stdout/stderr reading code happens. -+ */ -+ res = 0; - while (res <= 0) { - if (res < 0) { - if (errno != EINTR) { -@@ -698,7 +701,6 @@ - tv.tv_usec = 0L; - - fds = select(maxfd + 1, &readfds, NULL, NULL, &tv); -- - if (fds == -1 && - errno == EINTR) { - pr_signals_handle(); diff --git a/proftpd-1.3.4a-bug3727.patch b/proftpd-1.3.4a-bug3727.patch deleted file mode 100644 index 290c2c0..0000000 --- a/proftpd-1.3.4a-bug3727.patch +++ /dev/null @@ -1,133 +0,0 @@ -Index: contrib/mod_sftp/auth.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_sftp/auth.c,v -retrieving revision 1.40 -diff -u -r1.40 auth.c ---- contrib/mod_sftp/auth.c 11 Dec 2011 02:33:14 -0000 1.40 -+++ contrib/mod_sftp/auth.c 14 Dec 2011 18:45:53 -0000 -@@ -961,12 +961,12 @@ - * queried. - */ - if (send_userauth_methods() < 0) { -- pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -- pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -- - pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); - -+ pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -+ - return -1; - } - -@@ -984,12 +984,12 @@ - pr_trace_msg(trace_channel, 10, "auth method '%s' not enabled", method); - - if (send_userauth_methods() < 0) { -- pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -- pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -- - pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); - -+ pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -+ - return -1; - } - -@@ -1009,12 +1009,12 @@ - pr_trace_msg(trace_channel, 10, "auth method '%s' not enabled", method); - - if (send_userauth_methods() < 0) { -- pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -- pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -- - pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); - -+ pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -+ - return -1; - } - -@@ -1034,12 +1034,12 @@ - pr_trace_msg(trace_channel, 10, "auth method '%s' not enabled", method); - - if (send_userauth_methods() < 0) { -- pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -- pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -- - pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); - -+ pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -+ - return -1; - } - -@@ -1059,12 +1059,12 @@ - pr_trace_msg(trace_channel, 10, "auth method '%s' not enabled", method); - - if (send_userauth_methods() < 0) { -- pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -- pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -- - pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); - -+ pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -+ - return -1; - } - -@@ -1076,12 +1076,12 @@ - } - - } else { -- pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -- pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -- - pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); - -+ pr_cmd_dispatch_phase(cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(cmd, LOG_CMD_ERR, 0); -+ - (void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION, - "unsupported authentication method '%s' requested", method); - return -1; -@@ -1095,6 +1095,9 @@ - if (res <= 0) { - int xerrno = errno; - -+ pr_cmd_dispatch_phase(pass_cmd, POST_CMD_ERR, 0); -+ pr_cmd_dispatch_phase(pass_cmd, LOG_CMD_ERR, 0); -+ - pr_cmd_dispatch_phase(cmd, res == 0 ? POST_CMD : POST_CMD_ERR, 0); - pr_cmd_dispatch_phase(cmd, res == 0 ? LOG_CMD : LOG_CMD_ERR, 0); - -Index: contrib/mod_wrap2/mod_wrap2.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_wrap2/mod_wrap2.c,v -retrieving revision 1.40 -diff -u -r1.40 mod_wrap2.c ---- contrib/mod_wrap2/mod_wrap2.c 23 Nov 2011 18:04:38 -0000 1.40 -+++ contrib/mod_wrap2/mod_wrap2.c 14 Dec 2011 18:45:53 -0000 -@@ -1844,6 +1844,12 @@ - if (!wrap2_engine) - return PR_DECLINED(cmd); - -+ /* Clear the values from the session struct as well, specifically -+ * session.user. Failure to do so caused Bug#3727. -+ */ -+ session.user = NULL; -+ session.group = NULL; -+ - wrap2_ctxt = NULL; - wrap2_allow_table = NULL; - wrap2_deny_table = NULL; diff --git a/proftpd-1.3.4a-bug3729.patch b/proftpd-1.3.4a-bug3729.patch deleted file mode 100644 index b342e10..0000000 --- a/proftpd-1.3.4a-bug3729.patch +++ /dev/null @@ -1,27 +0,0 @@ -Index: contrib/mod_ldap.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_ldap.c,v -retrieving revision 1.94 -diff -u -r1.94 mod_ldap.c ---- contrib/mod_ldap.c 18 Nov 2011 17:34:02 -0000 1.94 -+++ contrib/mod_ldap.c 7 Dec 2011 22:38:07 -0000 -@@ -1978,15 +1979,17 @@ - ldap_do_users = 1; - ldap_user_basedn = pstrdup(session.pool, c->argv[0]); - -- if (c->argv[1]) { -+ if (c->argc > 1) { - ldap_user_name_filter = pstrdup(session.pool, c->argv[1]); -+ - } else { - ldap_user_name_filter = pstrcat(session.pool, - "(&(", ldap_attr_uid, "=%v)(objectclass=posixAccount))", NULL); - } - -- if (c->argv[2]) { -+ if (c->argc > 2) { - ldap_user_uid_filter = pstrdup(session.pool, c->argv[2]); -+ - } else { - ldap_user_uid_filter = pstrcat(session.pool, - "(&(", ldap_attr_uidnumber, "=%v)(objectclass=posixAccount))", NULL); diff --git a/proftpd-1.3.4a-bug3734.patch b/proftpd-1.3.4a-bug3734.patch deleted file mode 100644 index 9778030..0000000 --- a/proftpd-1.3.4a-bug3734.patch +++ /dev/null @@ -1,90 +0,0 @@ -Index: modules/mod_facts.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_facts.c,v -retrieving revision 1.45 -diff -u -r1.45 mod_facts.c ---- modules/mod_facts.c 23 May 2011 21:11:56 -0000 1.45 -+++ modules/mod_facts.c 17 Jan 2012 00:26:59 -0000 -@@ -1034,11 +1034,12 @@ - c = find_config(get_dir_ctxt(cmd->tmp_pool, (char *) best_path), CONF_PARAM, - "DirFakeUser", FALSE); - if (c) { -- const char *fake_user = NULL; -- - if (c->argc > 0) { -+ const char *fake_user = NULL; -+ - fake_user = c->argv[0]; -- if (strncmp(fake_user, "~", 2) != 0) { -+ if (fake_user != NULL && -+ strncmp(fake_user, "~", 2) != 0) { - fake_uid = pr_auth_name2uid(cmd->tmp_pool, fake_user); - - } else { -@@ -1054,11 +1055,12 @@ - c = find_config(get_dir_ctxt(cmd->tmp_pool, (char *) best_path), CONF_PARAM, - "DirFakeGroup", FALSE); - if (c) { -- const char *fake_group = NULL; -- - if (c->argc > 0) { -+ const char *fake_group = NULL; -+ - fake_group = c->argv[0]; -- if (strncmp(fake_group, "~", 2) != 0) { -+ if (fake_group != NULL && -+ strncmp(fake_group, "~", 2) != 0) { - fake_gid = pr_auth_name2gid(cmd->tmp_pool, fake_group); - - } else { -@@ -1213,13 +1215,20 @@ - c = find_config(get_dir_ctxt(cmd->tmp_pool, (char *) decoded_path), - CONF_PARAM, "DirFakeUser", FALSE); - if (c) { -- const char *fake_user; -+ if (c->argc > 0) { -+ const char *fake_user; - -- fake_user = c->argv[0]; -- if (strncmp(fake_user, "~", 2) != 0) { -- fake_uid = pr_auth_name2uid(cmd->tmp_pool, fake_user); -+ fake_user = c->argv[0]; -+ if (fake_user != NULL && -+ strncmp(fake_user, "~", 2) != 0) { -+ fake_uid = pr_auth_name2uid(cmd->tmp_pool, fake_user); -+ -+ } else { -+ fake_uid = session.uid; -+ } - - } else { -+ /* Handle the "DirFakeUser off" case (Bug#3715). */ - fake_uid = session.uid; - } - } -@@ -1227,13 +1236,20 @@ - c = find_config(get_dir_ctxt(cmd->tmp_pool, (char *) decoded_path), - CONF_PARAM, "DirFakeGroup", FALSE); - if (c) { -- const char *fake_group; -+ if (c->argc > 0) { -+ const char *fake_group; -+ -+ fake_group = c->argv[0]; -+ if (fake_group != NULL && -+ strncmp(fake_group, "~", 2) != 0) { -+ fake_gid = pr_auth_name2gid(cmd->tmp_pool, fake_group); - -- fake_group = c->argv[0]; -- if (strncmp(fake_group, "~", 2) != 0) { -- fake_gid = pr_auth_name2gid(cmd->tmp_pool, fake_group); -+ } else { -+ fake_gid = session.gid; -+ } - - } else { -+ /* Handle the "DirFakeGroup off" case (Bug#3715). */ - fake_gid = session.gid; - } - } - diff --git a/proftpd-1.3.4a-bug3742.patch b/proftpd-1.3.4a-bug3742.patch deleted file mode 100644 index 316e335..0000000 --- a/proftpd-1.3.4a-bug3742.patch +++ /dev/null @@ -1,33 +0,0 @@ -Index: contrib/mod_tls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_tls.c,v -retrieving revision 1.268 -diff -u -r1.268 mod_tls.c ---- contrib/mod_tls.c 23 Jan 2012 01:53:28 -0000 1.268 -+++ contrib/mod_tls.c 10 Feb 2012 02:12:23 -0000 -@@ -4415,6 +4415,7 @@ - case X509_V_ERR_CERT_HAS_EXPIRED: - case X509_V_ERR_CERT_REVOKED: - case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: -+ case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: - case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: - case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: - case X509_V_ERR_APPLICATION_VERIFICATION: -@@ -4439,17 +4440,6 @@ - break; - } - -- case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: -- /* XXX this is strange. we get this error for certain clients -- * (i.e. Jeff Altman's kftp) when all is ok. I think it's because the -- * client is actually sending the whole CA cert. This must be figured -- * out, but we let it pass for now. If the CA cert isn't available -- * locally, we will fail anyway. -- */ -- tls_log("%s", X509_verify_cert_error_string(ctx->error)); -- ok = 1; -- break; -- - default: - tls_log("error verifying client certificate: [%d] %s", - ctx->error, X509_verify_cert_error_string(ctx->error)); diff --git a/proftpd-1.3.4a-bug3743.patch b/proftpd-1.3.4a-bug3743.patch deleted file mode 100644 index 30438d1..0000000 --- a/proftpd-1.3.4a-bug3743.patch +++ /dev/null @@ -1,48 +0,0 @@ -Index: contrib/mod_sftp/fxp.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_sftp/fxp.c,v -retrieving revision 1.139 -diff -u -r1.139 fxp.c ---- contrib/mod_sftp/fxp.c 15 Feb 2012 22:10:56 -0000 1.139 -+++ contrib/mod_sftp/fxp.c 15 Feb 2012 22:30:19 -0000 -@@ -2511,7 +2511,18 @@ - fxp_packet_data_allocsz += sz; - } - -- memcpy(curr_buf, data, datalen); -+ /* We explicitly want to use memmove(3) here rather than memcpy(3), -+ * since it is possible (and likely) that after reading data out -+ * of this buffer, there will be leftover data which is put back into -+ * the buffer, only at a different offset. This means that the -+ * source and destination pointers CAN overlap; using memcpy(3) would -+ * lead to subtle memory copy issue (e.g. Bug#3743). -+ * -+ * This manifested as hard-to-reproduce SFTP upload/download stalls, -+ * segfaults, etc, due to corrupted memory being read out as -+ * packet lengths and such. -+ */ -+ memmove(curr_buf, data, datalen); - curr_buflen = datalen; - - return; -@@ -2556,8 +2567,18 @@ - } - } - -- /* Append the SSH2 data to the current unconsumed buffer. */ -- memcpy(curr_buf + curr_buflen, data, datalen); -+ /* We explicitly want to use memmove(3) here rather than memcpy(3), -+ * since it is possible (and likely) that after reading data out -+ * of this buffer, there will be leftover data which is put back into -+ * the buffer, only at a different offset. This means that the -+ * source and destination pointers CAN overlap; using memcpy(3) would -+ * lead to subtle memory copy issue (e.g. Bug#3743). -+ * -+ * This manifested as hard-to-reproduce SFTP upload/download stalls, -+ * segfaults, etc, due to corrupted memory being read out as -+ * packet lengths and such. -+ */ -+ memmove(curr_buf + curr_buflen, data, datalen); - curr_buflen += datalen; - } - diff --git a/proftpd-1.3.4a-bug3751.patch b/proftpd-1.3.4a-bug3751.patch deleted file mode 100644 index cb5eee7..0000000 --- a/proftpd-1.3.4a-bug3751.patch +++ /dev/null @@ -1,112 +0,0 @@ -Index: contrib/mod_ban.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_ban.c,v -retrieving revision 1.55 -diff -u -r1.55 mod_ban.c ---- contrib/mod_ban.c 12 Dec 2011 19:14:45 -0000 1.55 -+++ contrib/mod_ban.c 15 Feb 2012 19:20:45 -0000 -@@ -2819,39 +2819,21 @@ - pr_event_unregister(&ban_module, "mod_auth.max-users-per-host", NULL); - pr_event_unregister(&ban_module, "mod_ban.client-connect-rate", NULL); - -- /* "Bounce" the log file descriptor */ -+ /* Close the BanLog file descriptor; it will be reopened by the postparse -+ * event listener. -+ */ - close(ban_logfd); - ban_logfd = -1; - -- if (ban_log && -- strcasecmp(ban_log, "none") != 0) { -- int res; -- -- PRIVS_ROOT -- res = pr_log_openfile(ban_log, &ban_logfd, 0660); -- PRIVS_RELINQUISH -- -- switch (res) { -- case 0: -- break; -- -- case -1: -- pr_log_debug(DEBUG1, MOD_BAN_VERSION ": unable to open BanLog '%s': %s", -- ban_log, strerror(errno)); -- break; -- -- case PR_LOG_SYMLINK: -- pr_log_debug(DEBUG1, MOD_BAN_VERSION ": unable to open BanLog '%s': %s", -- ban_log, "is a symlink"); -- break; -- -- case PR_LOG_WRITABLE_DIR: -- pr_log_debug(DEBUG1, MOD_BAN_VERSION ": unable to open BanLog '%s': %s", -- ban_log, "parent directory is world-writable"); -- break; -- } -+ /* Close the BanTable file descriptor; it will be reopened by the postparse -+ * event listener. -+ */ -+ if (ban_tabfh != NULL) { -+ pr_fsio_close(ban_tabfh); -+ ban_tabfh = NULL; - } - -+ /* Remove the timer. */ - if (ban_timerno > 0) { - (void) pr_timer_remove(ban_timerno, &ban_module); - ban_timerno = -1; -Index: contrib/mod_ban.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/contrib/mod_ban.c,v -retrieving revision 1.55 -diff -u -r1.55 mod_ban.c ---- contrib/mod_ban.c 12 Dec 2011 19:14:45 -0000 1.55 -+++ contrib/mod_ban.c 22 Feb 2012 01:53:52 -0000 -@@ -2762,12 +2763,27 @@ - ban_tabfh = pr_fsio_open(ban_table, O_RDWR|O_CREAT); - PRIVS_RELINQUISH - -- if (!ban_tabfh) { -+ if (ban_tabfh == NULL) { - pr_log_pri(PR_LOG_NOTICE, MOD_BAN_VERSION - ": unable to open BanTable '%s': %s", ban_table, strerror(errno)); - pr_session_disconnect(&ban_module, PR_SESS_DISCONNECT_BAD_CONFIG, NULL); - } - -+ if (ban_tabfh->fh_fd <= STDERR_FILENO) { -+ int usable_fd; -+ -+ usable_fd = pr_fs_get_usable_fd(ban_tabfh->fh_fd); -+ if (usable_fd < 0) { -+ pr_log_debug(DEBUG0, MOD_BAN_VERSION -+ "warning: unable to find good fd for BanTable %s: %s", ban_table, -+ strerror(errno)); -+ -+ } else { -+ close(ban_tabfh->fh_fd); -+ ban_tabfh->fh_fd = usable_fd; -+ } -+ } -+ - /* Get the shm for storing all of our ban info. */ - lists = ban_get_shm(ban_tabfh); - if (lists == NULL && ---- src/log.c -+++ src/log.c -@@ -363,6 +363,16 @@ int log_opensyslog(const char *fn) { - if (syslog_sockfd < 0) - return -1; - -+ /* Find a usable fd for the just-opened socket fd. */ -+ if (syslog_sockfd <= STDERR_FILENO) { -+ res = pr_fs_get_usable_fd(syslog_sockfd); -+ if (res > 0) { -+ (void) close(syslog_sockfd); -+ syslog_sockfd = res; -+ } -+ } -+ -+ fcntl(syslog_sockfd, F_SETFD, FD_CLOEXEC); - systemlog_fd = -1; - - } else if ((res = pr_log_openfile(systemlog_fn, &systemlog_fd, diff --git a/proftpd-1.3.4a-bug3756.patch b/proftpd-1.3.4a-bug3756.patch deleted file mode 100644 index 67c6988..0000000 --- a/proftpd-1.3.4a-bug3756.patch +++ /dev/null @@ -1,185 +0,0 @@ -Index: modules/mod_ctrls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/modules/mod_ctrls.c,v -retrieving revision 1.53 -diff -u -r1.53 mod_ctrls.c ---- modules/mod_ctrls.c 12 Dec 2011 04:23:33 -0000 1.53 -+++ modules/mod_ctrls.c 23 Feb 2012 22:18:37 -0000 -@@ -492,19 +492,20 @@ - /* Make sure the path to which we want to bind this socket doesn't already - * exist. - */ -- unlink(sock_file); -+ (void) unlink(sock_file); - } - - /* Fill in the socket structure fields */ - memset(&sock, 0, sizeof(sock)); - - sock.sun_family = AF_UNIX; -- sstrncpy(sock.sun_path, sock_file, strlen(sock_file)); -+ sstrncpy(sock.sun_path, sock_file, sizeof(sock.sun_path)); - - len = sizeof(sock); - - /* Bind the name to the descriptor */ -- pr_trace_msg(trace_channel, 1, "binding ctrls socket to '%s'", sock.sun_path); -+ pr_trace_msg(trace_channel, 1, "binding ctrls socket fd %d to path '%s'", -+ sockfd, sock.sun_path); - if (bind(sockfd, (struct sockaddr *) &sock, len) < 0) { - int xerrno = errno; - -@@ -708,9 +709,10 @@ - close(ctrls_sockfd); - ctrls_sockfd = -1; - -- if (is_master) -+ if (is_master) { - /* Remove the local socket path as well */ -- unlink(ctrls_sock_file); -+ (void) unlink(ctrls_sock_file); -+ } - - return 0; - } -@@ -1159,9 +1161,30 @@ - } - } - -+ close(ctrls_sockfd); -+ ctrls_sockfd = -1; -+ -+ /* Remove the local socket path as well */ -+ (void) unlink(ctrls_sock_file); - return; - } - -+static void ctrls_postparse_ev(const void *event_data, void *user_data) { -+ if (!ctrls_engine) { -+ return; -+ } -+ -+ /* Start listening on the ctrl socket */ -+ PRIVS_ROOT -+ ctrls_sockfd = ctrls_listen(ctrls_sock_file, CTRLS_LISTEN_FL_REMOVE_SOCKET); -+ PRIVS_RELINQUISH -+ -+ /* Start a timer for the checking/processing of the ctrl socket. */ -+ pr_timer_remove(CTRLS_TIMER_ID, &ctrls_module); -+ pr_timer_add(ctrls_interval, CTRLS_TIMER_ID, &ctrls_module, ctrls_timer_cb, -+ "Controls polling"); -+} -+ - static void ctrls_restart_ev(const void *event_data, void *user_data) { - register unsigned int i; - -@@ -1209,26 +1232,11 @@ - pr_ctrls_init_acl(ctrls_acttab[i].act_acl); - } - -+ pr_timer_remove(CTRLS_TIMER_ID, &ctrls_module); - pr_alarms_unblock(); - return; - } - --static void ctrls_startup_ev(const void *event_data, void *user_data) { -- if (!ctrls_engine) { -- return; -- } -- -- /* Start listening on the ctrl socket */ -- PRIVS_ROOT -- ctrls_sockfd = ctrls_listen(ctrls_sock_file, CTRLS_LISTEN_FL_REMOVE_SOCKET); -- PRIVS_RELINQUISH -- -- /* Start a timer for the checking/processing of the ctrl socket. */ -- pr_timer_remove(CTRLS_TIMER_ID, &ctrls_module); -- pr_timer_add(ctrls_interval, CTRLS_TIMER_ID, &ctrls_module, ctrls_timer_cb, -- "Controls polling"); --} -- - /* Initialization routines - */ - -@@ -1262,7 +1270,7 @@ - - pr_event_register(&ctrls_module, "core.restart", ctrls_restart_ev, NULL); - pr_event_register(&ctrls_module, "core.shutdown", ctrls_shutdown_ev, NULL); -- pr_event_register(&ctrls_module, "core.startup", ctrls_startup_ev, NULL); -+ pr_event_register(&ctrls_module, "core.postparse", ctrls_postparse_ev, NULL); - - return 0; - } -Index: src/ctrls.c -=================================================================== -RCS file: /cvsroot/proftp/proftpd/src/ctrls.c,v -retrieving revision 1.32 -diff -u -r1.32 ctrls.c ---- src/ctrls.c 12 Dec 2011 04:23:33 -0000 1.32 -+++ src/ctrls.c 23 Feb 2012 22:18:37 -0000 -@@ -942,7 +942,11 @@ - /* Create a Unix domain socket */ - sockfd = socket(AF_UNIX, SOCK_STREAM, 0); - if (sockfd < 0) { -+ int xerrno = errno; -+ - pr_signals_unblock(); -+ -+ errno = xerrno; - return -1; - } - -@@ -975,15 +979,23 @@ - - /* Make it a socket */ - if (bind(sockfd, (struct sockaddr *) &cl_sock, len) < 0) { -+ int xerrno = errno; -+ - unlink(cl_sock.sun_path); - pr_signals_unblock(); -+ -+ errno = xerrno; - return -1; - } - - /* Set the proper mode */ - if (chmod(cl_sock.sun_path, PR_CTRLS_CL_MODE) < 0) { -+ int xerrno = errno; -+ - unlink(cl_sock.sun_path); - pr_signals_unblock(); -+ -+ errno = xerrno; - return -1; - } - -@@ -991,20 +1003,28 @@ - memset(&ctrl_sock, 0, sizeof(ctrl_sock)); - - ctrl_sock.sun_family = AF_UNIX; -- sstrncpy(ctrl_sock.sun_path, socket_file, strlen(socket_file)); -+ sstrncpy(ctrl_sock.sun_path, socket_file, sizeof(ctrl_sock.sun_path)); - len = sizeof(ctrl_sock); - - if (connect(sockfd, (struct sockaddr *) &ctrl_sock, len) < 0) { -+ int xerrno = errno; -+ - unlink(cl_sock.sun_path); - pr_signals_unblock(); -+ -+ errno = xerrno; - return -1; - } - - #if !defined(SO_PEERCRED) && !defined(HAVE_GETPEEREID) && \ - !defined(HAVE_GETPEERUCRED) && defined(LOCAL_CREDS) - if (ctrls_connect_local_creds(sockfd) < 0) { -+ int xerrno = errno; -+ - unlink(cl_sock.sun_path); - pr_signals_unblock(); -+ -+ errno = xerrno; - return -1; - } - #endif /* LOCAL_CREDS */ diff --git a/proftpd.spec b/proftpd.spec index a0416a4..370e14f 100644 --- a/proftpd.spec +++ b/proftpd.spec @@ -36,16 +36,16 @@ %define _hardened_build 1 #global prever rc3 -%global rpmrel 11 +%global rpmrel 1 Summary: Flexible, stable and highly-configurable FTP server Name: proftpd -Version: 1.3.4a +Version: 1.3.4b Release: %{?prever:0.}%{rpmrel}%{?prever:.%{prever}}%{?dist} License: GPLv2+ Group: System Environment/Daemons URL: http://www.proftpd.org/ -Source0: ftp://ftp.proftpd.org/distrib/source/proftpd-%{version}%{?prever}.tar.bz2 +Source0: ftp://ftp.proftpd.org/distrib/source/proftpd-%{version}%{?prever}.tar.gz Source1: proftpd.conf Source5: proftpd-welcome.msg Source9: proftpd.sysconfig @@ -61,25 +61,10 @@ Patch1: proftpd-1.3.4rc3-mysql-password.patch Patch2: proftpd.conf-no-memcached.patch Patch4: proftpd-1.3.4rc1-mod_vroot-test.patch Patch5: proftpd-1.3.4-utf8.patch -Patch10: proftpd-1.3.4a-bug3714.patch -Patch11: proftpd-1.3.4a-bug3715.patch -Patch12: proftpd-1.3.4a-bug3717.patch -Patch13: proftpd-1.3.4a-bug3719.patch Patch14: proftpd-1.3.4a-bug3720.patch -Patch15: proftpd-1.3.4a-bug3723.patch -Patch16: proftpd-1.3.4a-bug3724.patch -Patch17: proftpd-1.3.4a-bug3726.patch -Patch18: proftpd-1.3.4a-bug3727.patch -Patch19: proftpd-1.3.4a-bug3729.patch -Patch20: proftpd-1.3.4a-bug3734.patch -Patch21: proftpd-1.3.4a-bug3742.patch -Patch22: proftpd-1.3.4a-bug3743.patch Patch23: proftpd-1.3.4a-bug3744.patch Patch24: proftpd-1.3.4a-bug3745.patch Patch25: proftpd-1.3.4a-bug3746.patch -Patch26: proftpd-1.3.4a-bug3747.patch -Patch27: proftpd-1.3.4a-bug3751.patch -Patch28: proftpd-1.3.4a-bug3756.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root Requires(preun): coreutils, findutils %if %{use_systemd} @@ -226,58 +211,10 @@ cp -p %{SOURCE1} proftpd.conf # Fix character encoding in docs %patch5 -p1 -b .utf8 -# ftpwho/ftptop not showing command arguments -# http://bugs.proftpd.org/show_bug.cgi?id=3714 -%patch10 -p0 - -# MLSD/MLST fail when "DirFakeUser off" or "DirFakeGroup off" used -# http://bugs.proftpd.org/show_bug.cgi?id=3715 -%patch11 -p0 - -# proftpd fails to run with "Abort trap" error message -# http://bugs.proftpd.org/show_bug.cgi?id=3717 -%patch12 -p0 - -# LIST -R can loop endlessly if bad directory symlink exists -# http://bugs.proftpd.org/show_bug.cgi?id=3719 -%patch13 -p0 - # Various module logfile permissions are 0600 instead of 0640 # http://bugs.proftpd.org/show_bug.cgi?id=3720 %patch14 -p0 -# mod_memcache segfault on server restart -# http://bugs.proftpd.org/show_bug.cgi?id=3723 -%patch15 -p0 - -# Unloading mod_quotatab causes segfault -# http://bugs.proftpd.org/show_bug.cgi?id=3724 (#757311) -%patch16 -p0 - -# mod_exec does not always capture stdout/stderr output from executed command -# http://bugs.proftpd.org/show_bug.cgi?id=3726 -%patch17 -p0 - -# mod_wrap2 causes unexpected LogFormat %%u expansion for SFTP connections -# http://bugs.proftpd.org/show_bug.cgi?id=3727 -%patch18 -p0 - -# mod_ldap can segfault when LDAPUsers is used with no optional filters -# http://bugs.proftpd.org/show_bug.cgi?id=3729 -%patch19 -p0 - -# DirFakeUser/DirFakeGroup off with name causes SIGSEGV for MLSD/MLST commands -# http://bugs.proftpd.org/show_bug.cgi?id=3734 -%patch20 -p0 - -# Improper handling of self-signed certificate in client-sent cert list when "TLSVerifyClient on" is used -# http://bugs.proftpd.org/show_bug.cgi?id=3742 -%patch21 -p0 - -# Random stalls/segfaults seen when transferring large files via SFTP -# http://bugs.proftpd.org/show_bug.cgi?id=3743 -%patch22 -p0 - # Support ls(1) -1 option for LIST command # http://bugs.proftpd.org/show_bug.cgi?id=3744 %patch23 -p0 @@ -290,18 +227,6 @@ cp -p %{SOURCE1} proftpd.conf # http://bugs.proftpd.org/show_bug.cgi?id=3746 %patch25 -p0 -# Support option for displaying symlinks via MLSD using syntax preferred by FileZilla -# http://bugs.proftpd.org/show_bug.cgi?id=3747 -%patch26 -p0 - -# mod_ban does not close/reopen the BanLog/BanTable file descriptors on restart, causing a file descriptor leak -# http://bugs.proftpd.org/show_bug.cgi?id=3751 -%patch27 -p0 - -# mod_ctrls no longer listens on ControlsSocket after restart -# http://bugs.proftpd.org/show_bug.cgi?id=3756 -%patch28 -p0 - # Avoid documentation name conflicts mv contrib/README contrib/README.contrib @@ -595,6 +520,17 @@ fi %{_mandir}/man1/ftpwho.1* %changelog +* Wed Aug 1 2012 Paul Howarth 1.3.4b-1 +- Update to 1.3.4b + - Fixed mod_ldap segfault on login when LDAPUsers with no filters used + - Fixed sporadic SFTP upload issues for large files + - Fixed SSH2 handling for some clients (e.g. OpenVMS) + - New FactsOptions directive; see doc/modules/mod_facts.html#FactsOptions + - Fixed build errors on Tru64, AIX, Cygwin + - Lots of bugs fixed - see NEWS for details +- No bzipped tarball release this time, so revert to gzipped one +- Drop patches for fixes included in upstream release + * Sat Jul 21 2012 Fedora Release Engineering 1.3.4a-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild diff --git a/sources b/sources index 28a45ea..a419287 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -4e3235dc1ef95d36e59721d70c5c489c proftpd-1.3.4a.tar.bz2 +0871e0b93c9c3c88ca950b6d9a04aed2 proftpd-1.3.4b.tar.gz cc0e479406436e474ca7d59994fa73bb proftpd-mod-geoip-0.3.tar.gz 6db495b25e9da2ba0c901e7c44e119bc proftpd-mod-vroot-0.9.2.tar.gz ad574713bcd00f62883ff2f9a84eec1f Test-Unit-0.14.tar.gz