Hello community,

here is the log from the commit of package vsftpd for openSUSE:Factory checked 
in at 2016-04-01 13:01:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vsftpd (Old)
 and      /work/SRC/openSUSE:Factory/.vsftpd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "vsftpd"

Changes:
--------
--- /work/SRC/openSUSE:Factory/vsftpd/vsftpd.changes    2016-03-16 
10:26:35.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.vsftpd.new/vsftpd.changes       2016-04-01 
13:01:58.000000000 +0200
@@ -1,0 +2,17 @@
+Wed Mar 23 10:07:55 UTC 2016 - tchva...@suse.com
+
+- Require shadow and do not output the error out of useradd
+
+-------------------------------------------------------------------
+Tue Mar 22 14:27:27 UTC 2016 - tchva...@suse.com
+
+- Fix user creation to not report error when user alredy exist
+  bnc#972169
+
+-------------------------------------------------------------------
+Mon Mar 21 12:53:59 UTC 2016 - tchva...@suse.com
+
+- Fix bnc#970982 hanging on pam_exec in pam.d
+  * Add patch vsftpd-3.0.2-wnohang.patch
+
+-------------------------------------------------------------------

New:
----
  vsftpd-3.0.2-wnohang.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ vsftpd.spec ++++++
--- /var/tmp/diff_new_pack.eHdCZ9/_old  2016-04-01 13:01:59.000000000 +0200
+++ /var/tmp/diff_new_pack.eHdCZ9/_new  2016-04-01 13:01:59.000000000 +0200
@@ -68,11 +68,13 @@
 Patch21:        vsftpd-2.3.4-sqb.patch
 Patch22:        vsftpd-path-normalize.patch
 Patch23:        vsftpd-ls-memleak.patch
+#PATCH-FIX-UPSTREAM: bnc#970982
+Patch24:        vsftpd-3.0.2-wnohang.patch
 BuildRequires:  libcap-devel
 BuildRequires:  openssl-devel
 BuildRequires:  pam-devel
 Requires:       logrotate
-Requires(pre):  %{_sbindir}/useradd
+Requires(pre):  shadow
 Provides:       ftp-server
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %if %{with_systemd}
@@ -116,6 +118,7 @@
 %patch21 -p1
 %patch22 -p1
 %patch23 -p1
+%patch24 -p1
 
 %build
 %define seccomp_opts -D_GNU_SOURCE -DUSE_SECCOMP
@@ -148,7 +151,7 @@
 install -m 644 %{SOURCE6} 
%{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{name}
 
 %pre
-%{_sbindir}/useradd -r -g nogroup -s /bin/false -c "Secure FTP User" -d 
%{_localstatedir}/lib/empty ftpsecure 2> /dev/null || :
+getent passwd ftpsecure >/dev/null || useradd -r -g nogroup -s /bin/false -c 
"Secure FTP User" -d %{_localstatedir}/lib/empty ftpsecure
 %if %{with_systemd}
 %service_add_pre %{name}.service %{name}@.service %{name}.socket
 %endif

++++++ vsftpd-3.0.2-wnohang.patch ++++++
--- vsftpd-3.0.2/sysutil.c.wnohang      2015-08-03 07:35:33.619620425 +0200
+++ vsftpd-3.0.2/sysutil.c      2015-08-03 07:35:33.626620480 +0200
@@ -608,13 +608,13 @@ vsf_sysutil_exit(int exit_code)
 }
 
 struct vsf_sysutil_wait_retval
-vsf_sysutil_wait(void)
+vsf_sysutil_wait(int hang)
 {
   struct vsf_sysutil_wait_retval retval;
   vsf_sysutil_memclr(&retval, sizeof(retval));
   while (1)
   {
-    int sys_ret = wait(&retval.exit_status);
+    int sys_ret = waitpid(-1, &retval.exit_status, hang ? 0 : WNOHANG);
     if (sys_ret < 0 && errno == EINTR)
     {
       vsf_sysutil_check_pending_actions(kVSFSysUtilUnknown, 0, 0);
--- vsftpd-3.0.2/sysutil.h.wnohang      2015-08-03 07:35:33.610620354 +0200
+++ vsftpd-3.0.2/sysutil.h      2015-08-03 07:35:33.626620480 +0200
@@ -176,7 +176,7 @@ struct vsf_sysutil_wait_retval
   int PRIVATE_HANDS_OFF_syscall_retval;
   int PRIVATE_HANDS_OFF_exit_status;
 };
-struct vsf_sysutil_wait_retval vsf_sysutil_wait(void);
+struct vsf_sysutil_wait_retval vsf_sysutil_wait(int hang);
 int vsf_sysutil_wait_reap_one(void);
 int vsf_sysutil_wait_get_retval(
   const struct vsf_sysutil_wait_retval* p_waitret);
--- vsftpd-3.0.2/twoprocess.c.wnohang   2012-09-16 09:15:49.000000000 +0200
+++ vsftpd-3.0.2/twoprocess.c   2015-08-03 07:35:33.626620480 +0200
@@ -47,8 +47,17 @@ static void
 handle_sigchld(void* duff)
 {
 
-  struct vsf_sysutil_wait_retval wait_retval = vsf_sysutil_wait();
+  struct vsf_sysutil_wait_retval wait_retval = vsf_sysutil_wait(0);
   (void) duff;
+  if (!vsf_sysutil_wait_get_exitcode(&wait_retval) &&
+      !vsf_sysutil_wait_get_retval(&wait_retval))
+    /* There was nobody to wait for, possibly caused by underlying library
+     * which created a new process through fork()/vfork() and already picked
+     * it up, e.g. by pam_exec.so or integrity check routines for libraries
+     * when FIPS mode is on (nss freebl), which can lead to calling prelink
+     * if the prelink package is installed.
+     */
+    return;
   /* Child died, so we'll do the same! Report it as an error unless the child
    * exited normally with zero exit code
    */
@@ -390,7 +399,7 @@ common_do_login(struct vsf_session* p_se
   priv_sock_send_result(p_sess->parent_fd, PRIV_SOCK_RESULT_OK);
   if (!p_sess->control_use_ssl)
   {
-    (void) vsf_sysutil_wait();
+    (void) vsf_sysutil_wait(1);
   }
   else
   {



Reply via email to