aboutsummaryrefslogtreecommitdiff
path: root/databases/tdb
diff options
context:
space:
mode:
authorTimur I. Bakeyev <timur@FreeBSD.org>2015-09-19 13:36:27 +0000
committerTimur I. Bakeyev <timur@FreeBSD.org>2015-09-19 13:36:27 +0000
commit259a2b0a1ba38e3e6717fef7647942400d389de4 (patch)
tree77ede071e10afdbb9b57693603f7dc8cd2456260 /databases/tdb
parent4a34be3e778c346cb17a6336af9b44ce5a7ae16f (diff)
downloadports-259a2b0a1ba38e3e6717fef7647942400d389de4.tar.gz
ports-259a2b0a1ba38e3e6717fef7647942400d389de4.zip
Fix to the coredump in the library code of the Samba libs. Provided by Andrey Kramarenko.
Notes
Notes: svn path=/head/; revision=397323
Diffstat (limited to 'databases/tdb')
-rw-r--r--databases/tdb/Makefile2
-rw-r--r--databases/tdb/files/patch-lib_replace_replace.c68
2 files changed, 69 insertions, 1 deletions
diff --git a/databases/tdb/Makefile b/databases/tdb/Makefile
index 5c4385e55f96..a919973e9fdc 100644
--- a/databases/tdb/Makefile
+++ b/databases/tdb/Makefile
@@ -2,7 +2,7 @@
PORTNAME= tdb
PORTVERSION= 1.3.7
-PORTREVISION= 0
+PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= databases
MASTER_SITES= SAMBA
diff --git a/databases/tdb/files/patch-lib_replace_replace.c b/databases/tdb/files/patch-lib_replace_replace.c
new file mode 100644
index 000000000000..ec08fd5e8169
--- /dev/null
+++ b/databases/tdb/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 */
+