aboutsummaryrefslogtreecommitdiffstats
path: root/databases/ldb
diff options
context:
space:
mode:
authortimur <timur@FreeBSD.org>2015-09-19 21:36:27 +0800
committertimur <timur@FreeBSD.org>2015-09-19 21:36:27 +0800
commit0e16edec84ec088de89432c2238cd7b7d61b6500 (patch)
tree77ede071e10afdbb9b57693603f7dc8cd2456260 /databases/ldb
parent86888b40ac8d8ffc8c473ab6ba984d060c3de629 (diff)
downloadfreebsd-ports-gnome-0e16edec84ec088de89432c2238cd7b7d61b6500.tar.gz
freebsd-ports-gnome-0e16edec84ec088de89432c2238cd7b7d61b6500.tar.zst
freebsd-ports-gnome-0e16edec84ec088de89432c2238cd7b7d61b6500.zip
Fix to the coredump in the library code of the Samba libs. Provided by Andrey Kramarenko.
https://bugzilla.samba.org/show_bug.cgi?id=11455
Diffstat (limited to 'databases/ldb')
-rw-r--r--databases/ldb/Makefile2
-rw-r--r--databases/ldb/files/patch-lib_replace_replace.c68
2 files changed, 69 insertions, 1 deletions
diff --git a/databases/ldb/Makefile b/databases/ldb/Makefile
index 2b5eca3e57ec..166f0e48ec76 100644
--- a/databases/ldb/Makefile
+++ b/databases/ldb/Makefile
@@ -2,7 +2,7 @@
PORTNAME= ldb
PORTVERSION= 1.1.21
-PORTREVISION= 0
+PORTREVISION= 1
PORTEPOCH= 0
CATEGORIES= databases
MASTER_SITES= SAMBA
diff --git a/databases/ldb/files/patch-lib_replace_replace.c b/databases/ldb/files/patch-lib_replace_replace.c
new file mode 100644
index 000000000000..ec08fd5e8169
--- /dev/null
+++ b/databases/ldb/files/patch-lib_replace_replace.c
@@ -0,0 +1,68 @@
+From 035dd6447a06409c2df5ed559218f52479621abd Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Tue, 18 Aug 2015 20:57:27 +0200
+Subject: [PATCH] replace: Fix bug 11455
+
+Don't call rep_strtoull recursively
+
+Signed-off-by: Volker Lendecke <vl@samba.org>
+Bug: https://bugzilla.samba.org/show_bug.cgi?id=11455
+
+https://lists.samba.org/archive/samba-technical/2015-July/108587.html
+https://lists.samba.org/archive/samba-technical/2015-July/108588.html
+
+--- ./lib/replace/replace.c.orig 2015-09-18 23:51:08 UTC
++++ ./lib/replace/replace.c 2015-09-18 23:51:08 UTC
+@@ -518,8 +518,10 @@
+ }
+ #else
+ #ifdef HAVE_BSD_STRTOLL
++#undef strtoll
+ long long int rep_strtoll(const char *str, char **endptr, int base)
+ {
++ int errno0 = errno;
+ long long int nb = strtoll(str, endptr, base);
+ /* With glibc EINVAL is only returned if base is not ok */
+ if (errno == EINVAL) {
+@@ -528,7 +530,7 @@
+ * able to make the convertion.
+ * Let's reset errno.
+ */
+- errno = 0;
++ errno = errno0;
+ }
+ }
+ return nb;
+@@ -551,26 +553,24 @@
+ #endif
+ }
+ #else
+-#ifdef HAVE_BSD_STRTOLL
+-#ifdef HAVE_STRTOUQ
++#ifdef HAVE_BSD_STRTOLL /* yes, it's not HAVE_BSD_STRTOULL */
++#undef strtoull
+ unsigned long long int rep_strtoull(const char *str, char **endptr, int base)
+ {
+- unsigned long long int nb = strtouq(str, endptr, base);
+- /* In linux EINVAL is only returned if base is not ok */
++ int errno0 = errno;
++ unsigned long long int nb = strtoull(str, endptr, base);
++ /* With glibc EINVAL is only returned if base is not ok */
+ if (errno == EINVAL) {
+ if (base == 0 || (base >1 && base <37)) {
+ /* Base was ok so it's because we were not
+ * able to make the convertion.
+ * Let's reset errno.
+ */
+- errno = 0;
++ errno = errno0;
+ }
+ }
+ return nb;
+ }
+-#else
+-#error "You need the strtouq function"
+-#endif /* HAVE_STRTOUQ */
+ #endif /* HAVE_BSD_STRTOLL */
+ #endif /* HAVE_STRTOULL */
+