1
0
mirror of https://git.openwrt.org/feed/packages.git synced 2024-06-17 04:44:10 +02:00

davfs2: update to 1.5.6

Split musl patch into multiple small ones. Much easier to reason about.

Removed stack protector patch. This is not an issue anymore.

Removed NLS support. There seems to be a linking issue as
libiconv-stub does not have a shared library component.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
Rosen Penev 2020-07-15 14:16:27 -07:00
parent 139d518599
commit cf6c95d752
No known key found for this signature in database
GPG Key ID: 36D31CFA845F0E3B
9 changed files with 210 additions and 257 deletions

View File

@ -8,23 +8,22 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=davfs2
PKG_VERSION:=1.5.5
PKG_RELEASE:=3
PKG_VERSION:=1.5.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SAVANNAH/davfs2
PKG_HASH:=587c6a25ad78109995a7ccb8e60aa1c491b149f2c99d47033f3d5e648430ad2f
PKG_HASH:=417476cdcfd53966b2dcfaf12455b54f315959b488a89255ab4b44586153d801
PKG_MAINTAINER:=Federico Di Marco <fededim@gmail.com>
PKG_LICENSE:=GPL-3
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:davfs2:davfs2
PKG_FIXUP:=gettext-version autoreconf
PKG_FIXUP:=autoreconf
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/davfs2
SECTION:=net
@ -56,14 +55,11 @@ define Package/davfs2/conffiles
/etc/davfs2/davfs2.conf
endef
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include # $(ICONV_CFLAGS) $(INTL_CFLAGS)
TARGET_CPPFLAGS += -D_GNU_SOURCE # $(ICONV_CPFLAGS) $(INTL_CPPFLAGS)
CONFIGURE_VARS += \
LDFLAGS="$(TARGET_LDFLAGS) -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib $(if $(INTL_FULL),-lintl) $(if $(ICONV_FULL),-liconv)" #$(INTL_LDFLAGS) $(ICONV_LDFLAGS)
CONFIGURE_ARGS += --with-neon="$(STAGING_DIR)/usr" --enable-largefile #--with-libintl-prefix=$(INTL_PREFIX) --with-libiconv-prefix=$(ICONV_PREFIX)
CONFIGURE_ARGS += \
--with-neon="$(STAGING_DIR)/usr" \
--without-libiconv-prefix \
--without-libintl-prefix \
--disable-rpath
define Package/davfs2/install
$(INSTALL_DIR) $(1)/usr/sbin

View File

@ -0,0 +1,49 @@
--- a/src/mount_davfs.c
+++ b/src/mount_davfs.c
@@ -702,7 +702,7 @@ check_fstab(const dav_args *args)
struct mntent *ft = getmntent(fstab);
while (ft) {
if (ft->mnt_dir) {
- char *mp = canonicalize_file_name(ft->mnt_dir);
+ char *mp = realpath(ft->mnt_dir, NULL);
if (mp) {
if (strcmp(mp, mpoint) == 0) {
free(mp);
@@ -966,7 +966,7 @@ parse_commandline(int argc, char *argv[])
url = ne_strdup(argv[i]);
}
i++;
- mpoint = canonicalize_file_name(argv[i]);
+ mpoint = realpath(argv[i], NULL);
if (!mpoint)
error(EXIT_FAILURE, 0,
_("can't evaluate path of mount point %s"), mpoint);
@@ -2188,7 +2188,7 @@ read_config(dav_args *args, const char * filename, int system)
error_at_line(EXIT_FAILURE, 0, filename, lineno,
_("malformed line"));
*(parmv[0] + strlen(parmv[0]) - 1) = '\0';
- char *mp = canonicalize_file_name(parmv[0] + 1);
+ char *mp = realpath(parmv[0] + 1, NULL);
if (mp) {
applies = (strcmp(mp, mpoint) == 0);
free(mp);
@@ -2440,7 +2440,7 @@ read_secrets(dav_args *args, const char *filename)
if (scheme && !port)
port = ne_uri_defaultport(scheme);
- char *mp = canonicalize_file_name(parmv[0]);
+ char *mp = realpath(parmv[0], NULL);
char *ccert = NULL;
if (args->clicert) {
--- a/src/umount_davfs.c
+++ b/src/umount_davfs.c
@@ -118,7 +118,7 @@ main(int argc, char *argv[])
if (optind < (argc - 1))
error(EXIT_FAILURE, 0, _("too many arguments"));
- char *mpoint = canonicalize_file_name(argv[optind]);
+ char *mpoint = realpath(argv[optind], NULL);
char *umount_command = NULL;
if (mpoint) {

View File

@ -0,0 +1,11 @@
--- a/src/dav_fuse.c
+++ b/src/dav_fuse.c
@@ -48,6 +48,8 @@
#include <sys/stat.h>
#endif
+#include <sys/select.h>
+
#include "defaults.h"
#include "mount_davfs.h"
#include "cache.h"

View File

@ -0,0 +1,11 @@
--- a/src/kernel_interface.c
+++ b/src/kernel_interface.c
@@ -45,6 +45,8 @@
#include <unistd.h>
#endif
+#include <sys/types.h>
+
#ifdef HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#endif

View File

@ -0,0 +1,10 @@
--- a/src/mount_davfs.c
+++ b/src/mount_davfs.c
@@ -40,6 +40,7 @@
#ifdef HAVE_MNTENT_H
#include <mntent.h>
#endif
+#include <paths.h>
#include <pwd.h>
#include <signal.h>
#ifdef HAVE_STDINT_H

View File

@ -0,0 +1,120 @@
--- a/configure.ac
+++ b/configure.ac
@@ -42,7 +42,7 @@ DAV_CHECK_NEON
# Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h iconv.h libintl.h langinfo.h limits.h locale.h mntent.h stddef.h stdint.h stdlib.h string.h sys/file.h sys/mount.h sys/time.h syslog.h termios.h unistd.h utime.h])
+AC_CHECK_HEADERS([error.h fcntl.h iconv.h libintl.h langinfo.h limits.h locale.h mntent.h stddef.h stdint.h stdlib.h string.h sys/file.h sys/mount.h sys/time.h syslog.h termios.h unistd.h utime.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
--- a/src/cache.c
+++ b/src/cache.c
@@ -19,12 +19,12 @@
#include "config.h"
+#include "compat.h"
#ifdef HAVE_DIRENT_H
#include <dirent.h>
#endif
#include <errno.h>
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
--- /dev/null
+++ b/src/compat.h
@@ -0,0 +1,39 @@
+#ifndef _COMPAT_H
+#define _COMPAT_H
+
+#ifdef HAVE_ERROR_H
+# include <error.h>
+#else
+# include <stdio.h>
+# include <stdarg.h>
+# include <stdlib.h>
+# include <string.h>
+static void error_at_line(int status, int errnum, const char *filename,
+ unsigned int linenum, const char *format, ...)
+{
+ va_list ap;
+
+ fflush(stdout);
+
+ if (filename != NULL)
+ fprintf(stderr, "%s:%u: ", filename, linenum);
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+
+ if (errnum != 0)
+ fprintf(stderr, ": %s", strerror(errnum));
+
+ fprintf(stderr, "\n");
+
+ if (status != 0)
+ exit(status);
+}
+
+#define error(status, errnum, format...) \
+ error_at_line(status, errnum, NULL, 0, format)
+
+#endif /* HAVE_ERROR_H */
+
+#endif /* _COMPAT_H */
--- a/src/kernel_interface.c
+++ b/src/kernel_interface.c
@@ -19,8 +19,8 @@
#include "config.h"
+#include "compat.h"
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
--- a/src/mount_davfs.c
+++ b/src/mount_davfs.c
@@ -19,10 +19,10 @@
#include "config.h"
+#include "compat.h"
#include <ctype.h>
#include <errno.h>
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
--- a/src/umount_davfs.c
+++ b/src/umount_davfs.c
@@ -19,8 +19,8 @@
#include "config.h"
+#include "compat.h"
-#include <error.h>
#include <errno.h>
#include <getopt.h>
#ifdef HAVE_LIBINTL_H
--- a/src/webdav.c
+++ b/src/webdav.c
@@ -19,9 +19,9 @@
#include "config.h"
+#include "compat.h"
#include <errno.h>
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif

View File

@ -1,194 +0,0 @@
--- a/configure.ac
+++ b/configure.ac
@@ -42,7 +42,7 @@ DAV_CHECK_NEON
# Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h libintl.h langinfo.h limits.h locale.h mntent.h stddef.h stdint.h stdlib.h string.h sys/file.h sys/mount.h sys/time.h syslog.h termios.h unistd.h utime.h])
+AC_CHECK_HEADERS([error.h fcntl.h libintl.h langinfo.h limits.h locale.h mntent.h stddef.h stdint.h stdlib.h string.h sys/file.h sys/mount.h sys/time.h sys/select.h sys/types.h syslog.h termios.h unistd.h utime.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
@@ -78,7 +78,7 @@ AC_FUNC_SELECT_ARGTYPES
AC_FUNC_STRFTIME
AC_FUNC_STAT
AC_FUNC_UTIME_NULL
-AC_CHECK_FUNCS([endpwent ftruncate getmntent memset mkdir nl_langinfo rpmatch select setlocale strcasecmp strchr strdup strerror strpbrk strrchr strstr strtol strtoull utime])
+AC_CHECK_FUNCS([endpwent ftruncate getmntent memset mkdir nl_langinfo rpmatch select setlocale strcasecmp strchr strdup strerror strpbrk strrchr strstr strtol strtoull utime canonicalize_file_name fopencookie])
# Misc.
DAV_DEFAULTS
--- a/src/cache.c
+++ b/src/cache.c
@@ -19,12 +19,12 @@
#include "config.h"
+#include "compat.h"
#ifdef HAVE_DIRENT_H
#include <dirent.h>
#endif
#include <errno.h>
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
--- /dev/null
+++ b/src/compat.h
@@ -0,0 +1,64 @@
+#ifndef _COMPAT_H
+#define _COMPAT_H
+
+#ifndef _PATH_MOUNTED
+# define _PATH_MOUNTED "/proc/mounts"
+#endif
+
+#ifndef _PATH_MNTTAB
+# define _PATH_MNTTAB "/etc/fstab"
+#endif
+
+#ifdef HAVE_ERROR_H
+# include <error.h>
+#else
+# include <stdio.h>
+# include <stdarg.h>
+# include <stdlib.h>
+# include <string.h>
+static void error_at_line(int status, int errnum, const char *filename,
+ unsigned int linenum, const char *format, ...)
+{
+ va_list ap;
+
+ fflush(stdout);
+
+ if (filename != NULL)
+ fprintf(stderr, "%s:%u: ", filename, linenum);
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+
+ if (errnum != 0)
+ fprintf(stderr, ": %s", strerror(errnum));
+
+ fprintf(stderr, "\n");
+
+ if (status != 0)
+ exit(status);
+}
+
+#define error(status, errnum, format...) \
+ error_at_line(status, errnum, NULL, 0, format)
+
+#endif /* HAVE_ERROR_H */
+
+#ifndef HAVE_CANONICALIZE_FILE_NAME
+#include <limits.h>
+#include <string.h>
+#include <stdlib.h>
+static char * canonicalize_file_name(const char *path)
+{
+ char buf[PATH_MAX] = { };
+
+ snprintf(buf, sizeof(buf) - 1, "%s", path);
+
+ if (!realpath(path, buf))
+ return NULL;
+
+ return strdup(buf);
+}
+#endif
+
+#endif /* _COMPAT_H */
--- a/src/dav_fuse.c
+++ b/src/dav_fuse.c
@@ -47,6 +47,9 @@
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
#include "defaults.h"
#include "mount_davfs.h"
--- a/src/kernel_interface.c
+++ b/src/kernel_interface.c
@@ -19,8 +19,8 @@
#include "config.h"
+#include "compat.h"
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
@@ -51,6 +51,9 @@
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
#include <sys/wait.h>
#include "defaults.h"
--- a/src/mount_davfs.c
+++ b/src/mount_davfs.c
@@ -19,10 +19,10 @@
#include "config.h"
+#include "compat.h"
#include <ctype.h>
#include <errno.h>
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
--- a/src/umount_davfs.c
+++ b/src/umount_davfs.c
@@ -19,8 +19,8 @@
#include "config.h"
+#include "compat.h"
-#include <error.h>
#include <errno.h>
#include <getopt.h>
#ifdef HAVE_LIBINTL_H
--- a/src/webdav.c
+++ b/src/webdav.c
@@ -19,9 +19,9 @@
#include "config.h"
+#include "compat.h"
#include <errno.h>
-#include <error.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
@@ -368,6 +368,7 @@ dav_init_webdav(const dav_args *args)
error(EXIT_FAILURE, errno, _("socket library initialization failed"));
if (args->neon_debug & ~NE_DBG_HTTPPLAIN) {
+#ifdef HAVE_FOPENCOOKIE
char *buf = malloc(log_bufsize);
cookie_io_functions_t *log_func = malloc(sizeof(cookie_io_functions_t));
if (!log_func) abort();
@@ -380,6 +381,9 @@ dav_init_webdav(const dav_args *args)
error(EXIT_FAILURE, errno,
_("can't open stream to log neon-messages"));
ne_debug_init(log_stream, args->neon_debug);
+#else
+ error(EXIT_FAILURE, 0, "neon debugging unsupported");
+#endif
}
session = ne_session_create(args->scheme, args->host, args->port);

View File

@ -1,12 +0,0 @@
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,8 +32,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c \
kernel_interface.h mount_davfs.h webdav.h
umount_davfs_SOURCES = umount_davfs.c defaults.h
-AM_CFLAGS = -Wall -Werror=format-security \
- -fstack-protector-strong --param=ssp-buffer-size=4
+AM_CFLAGS = -Wall -Werror=format-security
DEFS = -DPROGRAM_NAME=\"mount.davfs\" \
-DDAV_SYS_CONF_DIR=\"$(pkgsysconfdir)\" \
-DDAV_LOCALSTATE_DIR=\"$(dav_localstatedir)\" \

View File

@ -1,38 +0,0 @@
--- a/src/webdav.c
+++ b/src/webdav.c
@@ -25,7 +25,7 @@
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
-#ifdef HAVE_ICONV_H
+#ifdef HAVE_ICONV
#include <iconv.h>
#endif
#ifdef HAVE_LANGINFO_H
@@ -231,7 +231,7 @@ static int initialized;
Needed by ssl_verify() which may be called at any time. */
static int have_terminal;
-#ifdef HAVE_ICONV_H
+#ifdef HAVE_ICONV
/* Handle to convert character encoding from utf-8 to LC_CTYPE.
If NULL no conversion is done. */
static iconv_t from_utf_8;
@@ -264,7 +264,7 @@ static char **cookie_list;
/* Private function prototypes and inline functions */
/*==================================================*/
-#ifdef HAVE_ICONV_H
+#ifdef HAVE_ICONV
static void
convert(char **s, iconv_t conv);
#endif
@@ -337,7 +337,7 @@ dav_init_webdav(const dav_args *args)
if (args->neon_debug & ~NE_DBG_HTTPPLAIN)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Initializing webdav");
-#ifdef HAVE_ICONV_H
+#ifdef HAVE_ICONV
char *lc_charset = nl_langinfo(CODESET);
if (lc_charset && strcasecmp(lc_charset, "UTF-8") != 0) {
from_utf_8 = iconv_open(lc_charset, "UTF-8");