aboutsummaryrefslogtreecommitdiffstats
path: root/main/krb5/CVE-2015-8629.patch
diff options
context:
space:
mode:
authorLeonardo Arena <rnalrd@alpinelinux.org>2016-02-22 14:42:12 +0000
committerLeonardo Arena <rnalrd@alpinelinux.org>2016-02-22 14:42:26 +0000
commiteab4343d4108ba85530b8141ae3fe0a2242cd72b (patch)
tree872fec9ab18ec4f98affaa57918efeda327cdf30 /main/krb5/CVE-2015-8629.patch
parentbdd0013fdbf7e436512b3e0ef1d7d2c4befac656 (diff)
downloadaports-eab4343d4108ba85530b8141ae3fe0a2242cd72b.tar.bz2
aports-eab4343d4108ba85530b8141ae3fe0a2242cd72b.tar.xz
main/krb5: security fixes (CVE-2015-8629, CVE-2015-8630, CVE-2015-8631). Fixes #5125
Diffstat (limited to 'main/krb5/CVE-2015-8629.patch')
-rw-r--r--main/krb5/CVE-2015-8629.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/main/krb5/CVE-2015-8629.patch b/main/krb5/CVE-2015-8629.patch
new file mode 100644
index 0000000000..1106460205
--- /dev/null
+++ b/main/krb5/CVE-2015-8629.patch
@@ -0,0 +1,45 @@
+From df17a1224a3406f57477bcd372c61e04c0e5a5bb Mon Sep 17 00:00:00 2001
+From: Greg Hudson <ghudson@mit.edu>
+Date: Fri, 8 Jan 2016 12:45:25 -0500
+Subject: [PATCH] Verify decoded kadmin C strings [CVE-2015-8629]
+
+In xdr_nullstring(), check that the decoded string is terminated with
+a zero byte and does not contain any internal zero bytes.
+
+CVE-2015-8629:
+
+In all versions of MIT krb5, an authenticated attacker can cause
+kadmind to read beyond the end of allocated memory by sending a string
+without a terminating zero byte. Information leakage may be possible
+for an attacker with permission to modify the database.
+
+ CVSSv2 Vector: AV:N/AC:H/Au:S/C:P/I:N/A:N/E:POC/RL:OF/RC:C
+
+ticket: 8341 (new)
+target_version: 1.14-next
+target_version: 1.13-next
+tags: pullup
+---
+ src/lib/kadm5/kadm_rpc_xdr.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/kadm5/kadm_rpc_xdr.c b/src/lib/kadm5/kadm_rpc_xdr.c
+index 2bef858..ba67084 100644
+--- a/src/lib/kadm5/kadm_rpc_xdr.c
++++ b/src/lib/kadm5/kadm_rpc_xdr.c
+@@ -64,7 +64,14 @@ bool_t xdr_nullstring(XDR *xdrs, char **objp)
+ return FALSE;
+ }
+ }
+- return (xdr_opaque(xdrs, *objp, size));
++ if (!xdr_opaque(xdrs, *objp, size))
++ return FALSE;
++ /* Check that the unmarshalled bytes are a C string. */
++ if ((*objp)[size - 1] != '\0')
++ return FALSE;
++ if (memchr(*objp, '\0', size - 1) != NULL)
++ return FALSE;
++ return TRUE;
+
+ case XDR_ENCODE:
+ if (size != 0)