summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch')
-rw-r--r--gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch b/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch
new file mode 100644
index 0000000000..491a358731
--- /dev/null
+++ b/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch
@@ -0,0 +1,29 @@
+Fix a null pointer dereference when no DNS search path is configured.
+This showed up as a segfault while running the gsasl test suite.
+
+Taken from upstream:
+https://github.com/krb5/krb5/commit/cd82bf377e7fad2409c76bf8b241920692f34fda
+
+diff --git a/src/lib/krb5/os/dnsglue.c b/src/lib/krb5/os/dnsglue.c
+index e35ca9d76c..0cd213fdd7 100644
+--- a/src/lib/krb5/os/dnsglue.c
++++ b/src/lib/krb5/os/dnsglue.c
+@@ -91,7 +91,7 @@ static int initparse(struct krb5int_dns_state *);
+ #define DECLARE_HANDLE(h) struct __res_state h
+ #define INIT_HANDLE(h) (memset(&h, 0, sizeof(h)), res_ninit(&h) == 0)
+ #define SEARCH(h, n, c, t, a, l) res_nsearch(&h, n, c, t, a, l)
+-#define PRIMARY_DOMAIN(h) strdup(h.dnsrch[0])
++#define PRIMARY_DOMAIN(h) ((h.dnsrch[0] == NULL) ? NULL : strdup(h.dnsrch[0]))
+ #if HAVE_RES_NDESTROY
+ #define DESTROY_HANDLE(h) res_ndestroy(&h)
+ #else
+@@ -104,7 +104,8 @@ static int initparse(struct krb5int_dns_state *);
+ #define DECLARE_HANDLE(h)
+ #define INIT_HANDLE(h) (res_init() == 0)
+ #define SEARCH(h, n, c, t, a, l) res_search(n, c, t, a, l)
+-#define PRIMARY_DOMAIN(h) strdup(_res.defdname)
++#define PRIMARY_DOMAIN(h) \
++ ((_res.defdname == NULL) ? NULL : strdup(_res.defdname))
+ #define DESTROY_HANDLE(h)
+
+ #endif