vsftpd: Add build option to disable utmpx update code
authorMaarten ter Huurne <maarten@treewalker.org>
Tue, 16 Sep 2014 13:17:30 +0000 (15:17 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Sun, 12 Oct 2014 07:32:15 +0000 (09:32 +0200)
This was modeled after a similar option for Dropbear.

The utmpx code is automatically disabled when compiling with musl,
to avoid a build error due to WTMPX_FILE being undefined. Note that
musl has an empty utmpx implementation, so no functionality is lost
by not calling it.

[Peter: use positive logic]
Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/vsftpd/Config.in
package/vsftpd/vsftpd-0001-utmpx-builddef.patch [new file with mode: 0644]
package/vsftpd/vsftpd.mk

index 0cc888037b8b1c3cc5497af98d7cdb23afc75c4a..464d6f27e3c89ebf38e6f1b1b1cad74a2393fd9f 100644 (file)
@@ -4,3 +4,15 @@ config BR2_PACKAGE_VSFTPD
        help
          vsftpd is an ftp daemon written with security in mind.
          http://vsftpd.beasts.org/
+
+if BR2_PACKAGE_VSFTPD
+
+config BR2_PACKAGE_VSFTPD_UTMPX
+       bool "log vsftpd access to utmpx"
+       # musl 1.1.4 has an empty utmpx implementation and no WTMPX_FILE
+       depends on !BR2_TOOLCHAIN_USES_MUSL
+       help
+         Enable logging of vsftpd access to utmpx.
+         Note that Buildroot does not generate utmpx by default.
+
+endif
diff --git a/package/vsftpd/vsftpd-0001-utmpx-builddef.patch b/package/vsftpd/vsftpd-0001-utmpx-builddef.patch
new file mode 100644 (file)
index 0000000..07bf13c
--- /dev/null
@@ -0,0 +1,49 @@
+Add build option to disable utmpx update code
+
+On some embedded systems the libc may have utmpx support, but the
+feature would be redundant. So add a build switch to disable utmpx
+updating, similar to compiling on systems without utmpx support.
+
+Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
+
+diff -ru vsftpd-3.0.2.orig/builddefs.h vsftpd-3.0.2/builddefs.h
+--- vsftpd-3.0.2.orig/builddefs.h      2012-04-05 05:24:56.000000000 +0200
++++ vsftpd-3.0.2/builddefs.h   2014-09-16 14:23:36.128003245 +0200
+@@ -4,6 +4,7 @@
+ #undef VSF_BUILD_TCPWRAPPERS
+ #define VSF_BUILD_PAM
+ #undef VSF_BUILD_SSL
++#define VSF_BUILD_UTMPX
+ #endif /* VSF_BUILDDEFS_H */
+diff -ru vsftpd-3.0.2.orig/sysdeputil.c vsftpd-3.0.2/sysdeputil.c
+--- vsftpd-3.0.2.orig/sysdeputil.c     2012-09-16 06:18:04.000000000 +0200
++++ vsftpd-3.0.2/sysdeputil.c  2014-09-16 14:26:42.686887724 +0200
+@@ -1158,7 +1158,7 @@
+ #endif /* !VSF_SYSDEP_NEED_OLD_FD_PASSING */
+-#ifndef VSF_SYSDEP_HAVE_UTMPX
++#if !defined(VSF_BUILD_UTMPX) || !defined(VSF_SYSDEP_HAVE_UTMPX)
+ void
+ vsf_insert_uwtmp(const struct mystr* p_user_str,
+@@ -1173,7 +1173,7 @@
+ {
+ }
+-#else /* !VSF_SYSDEP_HAVE_UTMPX */
++#else /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */
+ /* IMHO, the pam_unix module REALLY should be doing this in its SM component */
+ /* Statics */
+@@ -1238,7 +1238,7 @@
+   updwtmpx(WTMPX_FILE, &s_utent);
+ }
+-#endif /* !VSF_SYSDEP_HAVE_UTMPX */
++#endif /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */
+ void
+ vsf_set_die_if_parent_dies()
index 5801656265ae155ef7e3c642381b7af8074191f9..cab5afb7322891b457148818b9fa6736e8630edb 100644 (file)
@@ -10,10 +10,18 @@ VSFTPD_LIBS = -lcrypt
 VSFTPD_LICENSE = GPLv2
 VSFTPD_LICENSE_FILES = COPYING
 
+define VSFTPD_DISABLE_UTMPX
+       $(SED) 's/.*VSF_BUILD_UTMPX/#undef VSF_BUILD_UTMPX/' $(@D)/builddefs.h
+endef
+
 define VSFTPD_ENABLE_SSL
        $(SED) 's/.*VSF_BUILD_SSL/#define VSF_BUILD_SSL/' $(@D)/builddefs.h
 endef
 
+ifeq ($(BR2_PACKAGE_VSFTPD_UTMPX),)
+VSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_DISABLE_UTMPX
+endif
+
 ifeq ($(BR2_PACKAGE_OPENSSL),y)
 VSFTPD_DEPENDENCIES += openssl
 VSFTPD_LIBS += -lssl -lcrypto