rpms/vsftpd/devel vsftpd-2.1.0-trim.patch, NONE, 1.1 vsftpd-2.1.0-userlistdelay.patch, NONE, 1.1 vsftpd-2.1.1-daemonize_plus.patch, NONE, 1.1 .cvsignore, 1.17, 1.18 sources, 1.17, 1.18 vsftpd.spec, 1.88, 1.89

Jiri Skala jskala at fedoraproject.org
Mon May 4 14:09:38 UTC 2009


Author: jskala

Update of /cvs/extras/rpms/vsftpd/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv18007

Modified Files:
	.cvsignore sources vsftpd.spec 
Added Files:
	vsftpd-2.1.0-trim.patch vsftpd-2.1.0-userlistdelay.patch 
	vsftpd-2.1.1-daemonize_plus.patch 
Log Message:
* Wed Apr 22 2009 Jiri Skala <jskala at redhat.com> - 2.1.0-3
- updated to latest upstream version
- improved daemonizing - init script gets correct return code if binding fails
- trim white spaces from option values
- fixed #483604 - vsftpd not honouring delay_failed_login when userlist active


vsftpd-2.1.0-trim.patch:

--- NEW FILE vsftpd-2.1.0-trim.patch ---
diff -up vsftpd-2.1.0/parseconf.c.trim vsftpd-2.1.0/parseconf.c
--- vsftpd-2.1.0/parseconf.c.trim	2009-03-24 15:50:47.000000000 +0100
+++ vsftpd-2.1.0/parseconf.c	2009-03-24 15:51:10.000000000 +0100
@@ -273,7 +273,7 @@ handle_config_setting(struct mystr* p_se
         }
         else
         {
-          *p_curr_setting = str_strdup(p_value_str);
+          *p_curr_setting = str_strdup_trimmed(p_value_str);
         }
         return;
       }
diff -up vsftpd-2.1.0/str.c.trim vsftpd-2.1.0/str.c
--- vsftpd-2.1.0/str.c.trim	2009-03-24 15:50:34.000000000 +0100
+++ vsftpd-2.1.0/str.c	2009-03-24 15:54:07.000000000 +0100
@@ -89,6 +89,18 @@ str_strdup(const struct mystr* p_str)
   return vsf_sysutil_strdup(str_getbuf(p_str));
 }
 
+const char*
+str_strdup_trimmed(const struct mystr* p_str)
+{
+  const char* p_trimmed = str_getbuf(p_str);
+  int h, t, newlen;
+
+  for (h = 0; h < (int)str_getlen(p_str) && vsf_sysutil_isspace(p_trimmed[h]); h++) ;
+  for (t = str_getlen(p_str) - 1; t >= 0 && vsf_sysutil_isspace(p_trimmed[t]); t--) ;
+  newlen = t - h + 1;
+  return newlen ? vsf_sysutil_strndup(p_trimmed+h, (unsigned int)newlen) : 0L;
+}
+
 void
 str_alloc_alt_term(struct mystr* p_str, const char* p_src, char term)
 {
diff -up vsftpd-2.1.0/str.h.trim vsftpd-2.1.0/str.h
--- vsftpd-2.1.0/str.h.trim	2009-03-24 15:50:31.000000000 +0100
+++ vsftpd-2.1.0/str.h	2009-03-24 15:51:48.000000000 +0100
@@ -31,6 +31,7 @@ void str_alloc_ulong(struct mystr* p_str
 void str_alloc_filesize_t(struct mystr* p_str, filesize_t the_filesize);
 void str_copy(struct mystr* p_dest, const struct mystr* p_src);
 const char* str_strdup(const struct mystr* p_str);
+const char* str_strdup_trimmed(const struct mystr* p_str);
 void str_empty(struct mystr* p_str);
 void str_free(struct mystr* p_str);
 void str_trunc(struct mystr* p_str, unsigned int trunc_len);
diff -up vsftpd-2.1.0/sysutil.c.trim vsftpd-2.1.0/sysutil.c
--- vsftpd-2.1.0/sysutil.c.trim	2009-03-24 15:50:19.000000000 +0100
+++ vsftpd-2.1.0/sysutil.c	2009-03-24 15:52:53.000000000 +0100
@@ -1031,6 +1031,18 @@ vsf_sysutil_strdup(const char* p_str)
   return strdup(p_str);
 }
 
+char*
+vsf_sysutil_strndup(const char* p_str, unsigned int p_len)
+{
+  char *new = (char *)malloc(p_len+1);
+
+  if (new == NULL)
+    return NULL;
+
+  new[p_len]='\0';
+  return (char *)memcpy(new, p_str, p_len);
+}
+
 void
 vsf_sysutil_memclr(void* p_dest, unsigned int size)
 {
diff -up vsftpd-2.1.0/sysutil.h.trim vsftpd-2.1.0/sysutil.h
--- vsftpd-2.1.0/sysutil.h.trim	2009-03-24 15:50:23.000000000 +0100
+++ vsftpd-2.1.0/sysutil.h	2009-03-24 15:52:14.000000000 +0100
@@ -184,6 +184,7 @@ int vsf_sysutil_wait_get_exitcode(
 /* Various string functions */
 unsigned int vsf_sysutil_strlen(const char* p_text);
 char* vsf_sysutil_strdup(const char* p_str);
+char* vsf_sysutil_strndup(const char* p_str, unsigned int p_len);
 void vsf_sysutil_memclr(void* p_dest, unsigned int size);
 void vsf_sysutil_memcpy(void* p_dest, const void* p_src,
                         const unsigned int size);

vsftpd-2.1.0-userlistdelay.patch:

--- NEW FILE vsftpd-2.1.0-userlistdelay.patch ---
diff -pruN vsftpd-2.1.0.orig/prelogin.c vsftpd-2.1.0/prelogin.c
--- vsftpd-2.1.0.orig/prelogin.c	2009-04-12 16:00:09.000000000 +0200
+++ vsftpd-2.1.0/prelogin.c	2009-04-12 16:13:57.000000000 +0200
@@ -217,6 +217,7 @@ handle_user_command(struct vsf_session* 
     if ((located && tunable_userlist_deny) ||
         (!located && !tunable_userlist_deny))
     {
+      check_login_delay();
       vsf_cmdio_write(p_sess, FTP_LOGINERR, "Permission denied.");
       check_login_fails(p_sess);
       if (tunable_userlist_log)

vsftpd-2.1.1-daemonize_plus.patch:

--- NEW FILE vsftpd-2.1.1-daemonize_plus.patch ---
diff -up vsftpd-2.1.1/standalone.c.daemonize_plus vsftpd-2.1.1/standalone.c
--- vsftpd-2.1.1/standalone.c.daemonize_plus	2009-04-29 17:46:52.000000000 +0200
+++ vsftpd-2.1.1/standalone.c	2009-04-29 17:46:52.000000000 +0200
@@ -26,6 +26,8 @@ static unsigned int s_ipaddr_size;
 
 static void handle_sigchld(void*  duff);
 static void handle_sighup(void*  duff);
+static void handle_sigusr1(int sig);
+static void handle_sigalrm(int sig);
 static void prepare_child(int sockfd);
 static unsigned int handle_ip_count(void* p_raw_addr);
 static void drop_ip_count(void* p_raw_addr);
@@ -50,7 +52,13 @@ vsf_standalone_main(void)
     if (forkret > 0)
     {
       /* Parent, just exit */
-      vsf_sysutil_exit(0);
+      vsf_sysutil_sigaction(kVSFSysUtilSigALRM, handle_sigalrm);
+      vsf_sysutil_sigaction(kVSFSysUtilSigUSR1, handle_sigusr1);
+
+      vsf_sysutil_set_alarm(3);
+      vsf_sysutil_pause();
+
+      vsf_sysutil_exit(1);
     }
     /* Son, close standard FDs to avoid SSH hang-on-exit */
     vsf_sysutil_reopen_standard_fds();
@@ -98,6 +106,10 @@ vsf_standalone_main(void)
     {
       die("could not bind listening IPv4 socket");
     }
+    else
+    {
+      vsf_sysutil_kill(vsf_sysutil_getppid(), kVSFSysUtilSigUSR1);
+    }
   }
   else
   {
@@ -127,6 +139,10 @@ vsf_standalone_main(void)
     {
       die("could not bind listening IPv6 socket");
     }
+    else
+    {
+      vsf_sysutil_kill(vsf_sysutil_getppid(), kVSFSysUtilSigUSR1);
+    }
   }
   vsf_sysutil_close(0);
   vsf_sysutil_close(1);
@@ -252,6 +268,20 @@ handle_sighup(void* duff)
   vsf_parseconf_load_file(0, 0);
 }
 
+static void
+handle_sigalrm(int sig)
+{
+  (void)sig; // avoid unused parameter error
+  vsf_sysutil_exit(1);
+}
+
+static void
+handle_sigusr1(int sig)
+{
+  (void)sig; // avoid unused parameter error
+  vsf_sysutil_exit(0);
+}
+
 static unsigned int
 hash_ip(unsigned int buckets, void* p_key)
 {
diff -up vsftpd-2.1.1/sysutil.c.daemonize_plus vsftpd-2.1.1/sysutil.c
--- vsftpd-2.1.1/sysutil.c.daemonize_plus	2009-02-26 02:44:29.000000000 +0100
+++ vsftpd-2.1.1/sysutil.c	2009-04-29 17:46:52.000000000 +0200
@@ -201,6 +201,9 @@ vsf_sysutil_translate_sig(const enum EVS
     case kVSFSysUtilSigHUP:
       realsig = SIGHUP;
       break;
+    case kVSFSysUtilSigUSR1:
+      realsig = SIGUSR1;
+      break;
     default:
       bug("unknown signal in vsf_sysutil_translate_sig");
       break;
@@ -538,6 +541,12 @@ vsf_sysutil_getpid(void)
   return (unsigned int) s_current_pid;
 }
 
+unsigned int
+vsf_sysutil_getppid(void)
+{
+  return (unsigned int)getppid();
+}
+
 int
 vsf_sysutil_fork(void)
 {
@@ -1031,6 +1040,18 @@ vsf_sysutil_strdup(const char* p_str)
   return strdup(p_str);
 }
 
+char*
+vsf_sysutil_strndup(const char* p_str, unsigned int p_len)
+{
+  char *new = (char *)malloc(p_len+1);
+
+  if (new == NULL)
+    return NULL;
+
+  new[p_len]='\0';
+  return (char *)memcpy(new, p_str, p_len);
+}
+
 void
 vsf_sysutil_memclr(void* p_dest, unsigned int size)
 {
@@ -2774,3 +2795,23 @@ vsf_sysutil_set_no_fds()
     die("setrlimit NOFILE");
   }
 }
+
+void
+vsf_sysutil_sigaction(const enum EVSFSysUtilSignal sig, void (*p_handlefunc)(int))
+{
+  int realsig = vsf_sysutil_translate_sig(sig);
+  vsf_sysutil_set_sighandler(realsig, p_handlefunc);
+}
+
+int
+vsf_sysutil_kill(int pid, int sig)
+{
+  int realsig = vsf_sysutil_translate_sig(sig);
+  return kill(pid, realsig);
+}
+
+int
+vsf_sysutil_pause()
+{
+  return pause();
+}
diff -up vsftpd-2.1.1/sysutil.h.daemonize_plus vsftpd-2.1.1/sysutil.h
--- vsftpd-2.1.1/sysutil.h.daemonize_plus	2009-02-26 02:47:41.000000000 +0100
+++ vsftpd-2.1.1/sysutil.h	2009-04-29 17:46:52.000000000 +0200
@@ -29,7 +29,8 @@ enum EVSFSysUtilSignal
   kVSFSysUtilSigCHLD,
   kVSFSysUtilSigPIPE,
   kVSFSysUtilSigURG,
-  kVSFSysUtilSigHUP
+  kVSFSysUtilSigHUP,
+  kVSFSysUtilSigUSR1
 };
 enum EVSFSysUtilInterruptContext
 {
@@ -164,6 +165,7 @@ void vsf_sysutil_free(void* p_ptr);
 
 /* Process creation/exit/process handling */
 unsigned int vsf_sysutil_getpid(void);
+unsigned int vsf_sysutil_getppid(void);
 int vsf_sysutil_fork(void);
 int vsf_sysutil_fork_failok(void);
 void vsf_sysutil_exit(int exit_code);
@@ -180,10 +182,14 @@ int vsf_sysutil_wait_exited_normally(
   const struct vsf_sysutil_wait_retval* p_waitret);
 int vsf_sysutil_wait_get_exitcode(
   const struct vsf_sysutil_wait_retval* p_waitret);
+void vsf_sysutil_sigaction(const enum EVSFSysUtilSignal sig, void (*p_handlefunc)(int));
+int vsf_sysutil_kill(int pid, int sig);
+int vsf_sysutil_pause();
 
 /* Various string functions */
 unsigned int vsf_sysutil_strlen(const char* p_text);
 char* vsf_sysutil_strdup(const char* p_str);
+char* vsf_sysutil_strndup(const char* p_str, unsigned int p_len);
 void vsf_sysutil_memclr(void* p_dest, unsigned int size);
 void vsf_sysutil_memcpy(void* p_dest, const void* p_src,
                         const unsigned int size);


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/vsftpd/devel/.cvsignore,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -p -r1.17 -r1.18
--- .cvsignore	24 Feb 2009 08:21:29 -0000	1.17
+++ .cvsignore	4 May 2009 14:09:07 -0000	1.18
@@ -1 +1 @@
-vsftpd-2.1.0.tar.gz
+vsftpd-2.1.1pre1.tar.gz


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/vsftpd/devel/sources,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -p -r1.17 -r1.18
--- sources	24 Feb 2009 08:21:29 -0000	1.17
+++ sources	4 May 2009 14:09:07 -0000	1.18
@@ -1 +1 @@
-7890b54e7ffa6106ffbdfda53f47fa41  vsftpd-2.1.0.tar.gz
+ea57505bf438eef6d4f53d4dc7fe8574  vsftpd-2.1.1pre1.tar.gz


Index: vsftpd.spec
===================================================================
RCS file: /cvs/extras/rpms/vsftpd/devel/vsftpd.spec,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -p -r1.88 -r1.89
--- vsftpd.spec	26 Feb 2009 00:52:32 -0000	1.88
+++ vsftpd.spec	4 May 2009 14:09:08 -0000	1.89
@@ -1,15 +1,16 @@
 %{!?tcp_wrappers:%define tcp_wrappers 1}
+%{!?pretag:%define pretag pre1}
 
 Name: vsftpd
-Version: 2.1.0
-Release: 2%{?dist}
+Version: 2.1.1
+Release: 0.1.%{pretag}%{?dist}
 Summary: Very Secure Ftp Daemon
 
 Group: System Environment/Daemons
 # OpenSSL link exception
 License: GPLv2 with exceptions
 URL: http://vsftpd.beasts.org/
-Source0: ftp://vsftpd.beasts.org/users/cevans/%{name}-%{version}.tar.gz
+Source0: ftp://vsftpd.beasts.org/users/cevans/%{name}-%{version}%{pretag}.tar.gz
 Source1: vsftpd.xinetd
 Source2: vsftpd.pam
 Source3: vsftpd.ftpusers
@@ -46,6 +47,9 @@ Patch7: vsftpd-2.1.0-filter.patch
 Patch8: vsftpd-2.0.5-greedy.patch
 Patch9: vsftpd-2.1.0-userlist_log.patch
 
+Patch10: vsftpd-2.1.1-daemonize_plus.patch
+Patch11: vsftpd-2.1.0-trim.patch
+Patch12: vsftpd-2.1.0-userlistdelay.patch
 
 %description
 vsftpd is a Very Secure FTP daemon. It was written completely from
@@ -67,6 +71,9 @@ cp %{SOURCE1} .
 %patch7 -p1 -b .filter
 %patch8 -p1 -b .greedy
 %patch9 -p1 -b .userlist_log
+%patch10 -p1 -b .daemonize_plus
+%patch11 -p1 -b .trim
+%patch12 -p1 -b .userlistdelay
 
 
 %build
@@ -132,6 +139,12 @@ fi
 
 
 %changelog
+* Wed Apr 22 2009 Jiri Skala <jskala at redhat.com> - 2.1.0-3
+- updated to latest upstream version
+- improved daemonizing - init script gets correct return code if binding fails
+- trim white spaces from option values
+- fixed #483604 - vsftpd not honouring delay_failed_login when userlist active
+
 * Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.1.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
 




More information about the scm-commits mailing list