aboutsummaryrefslogtreecommitdiffstats
path: root/main/krb5
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2016-09-14 15:54:27 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2016-09-14 15:55:14 +0200
commit5dfc3609c83443f92ad4f2deb320e2e4e8a711bd (patch)
tree8deaa9b1807dbc93182172c759e5811ec7fc15ae /main/krb5
parent94dcb149b65b485dca49a36405a62c43c93c3646 (diff)
downloadaports-5dfc3609c83443f92ad4f2deb320e2e4e8a711bd.tar.bz2
aports-5dfc3609c83443f92ad4f2deb320e2e4e8a711bd.tar.xz
main/krb5: security upgrade to 1.14.3 (CVE-2016-3120)
fixes #6157
Diffstat (limited to 'main/krb5')
-rw-r--r--main/krb5/APKBUILD26
-rw-r--r--main/krb5/CVE-2015-8629.patch45
-rw-r--r--main/krb5/CVE-2015-8630.patch75
-rw-r--r--main/krb5/CVE-2015-8631.patch570
-rw-r--r--main/krb5/CVE-2016-3119.patch38
5 files changed, 5 insertions, 749 deletions
diff --git a/main/krb5/APKBUILD b/main/krb5/APKBUILD
index 815869e1a3..013fc7efc6 100644
--- a/main/krb5/APKBUILD
+++ b/main/krb5/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=krb5
-pkgver=1.14
-pkgrel=2
+pkgver=1.14.3
+pkgrel=0
case $pkgver in
*.*.*) _ver=${pkgver%.*};;
@@ -22,10 +22,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-server
$pkgname-server-ldap:ldap $pkgname-pkinit $pkgname-libs"
source="http://web.mit.edu/kerberos/dist/krb5/${_ver}/krb5-$pkgver.tar.gz
mit-krb5_krb5-config_LDFLAGS.patch
- CVE-2015-8629.patch
- CVE-2015-8630.patch
- CVE-2015-8631.patch
- CVE-2016-3119.patch
krb5kadmind.initd
krb5kdc.initd
@@ -121,30 +117,18 @@ libs() {
mkdir -p "$subpkgdir"/usr/
mv "$pkgdir"/usr/lib "$subpkgdir"/usr/ || return 1
}
-md5sums="0727968764d0208388b85ad31aafde24 krb5-1.14.tar.gz
+md5sums="f76e4f8a3c95bb59980dd5ef4b48aea9 krb5-1.14.3.tar.gz
c84a0c7d8014e3528524956ffdd1c3e9 mit-krb5_krb5-config_LDFLAGS.patch
-51bfc721a58e4dd28ebcf2f600ff3455 CVE-2015-8629.patch
-f8b6f512f94dcad5bfdc1250beaf2d11 CVE-2015-8630.patch
-380b86bdaa1303a6bc7b0cc3672c3e43 CVE-2015-8631.patch
-4c1026deb45e9d6f2daf70198806908b CVE-2016-3119.patch
9c0e3bac122326cdbbbac068056ee8af krb5kadmind.initd
71131479c07a2d89b30a2ea18dd64e74 krb5kdc.initd
d94873a6a1ac6277adf2d25458eda9e5 krb5kpropd.initd"
-sha256sums="cedb07fad8331e3ff2983d26e977a2ddba622f379c2b19bfea85bd695930f9e9 krb5-1.14.tar.gz
+sha256sums="cd4620d520cf0df0dd8791309912df2bb20fcba76790b9fba4e25c1da08ff2c9 krb5-1.14.3.tar.gz
84007c7423f67db7a8b248b9643c49ef25f2d56ce15c2574eb41ecbf51bcd3f2 mit-krb5_krb5-config_LDFLAGS.patch
-6c462dfa8202be953d3b9dc2acecb94b3576663caf7a1ceb1275b1dcb6b11171 CVE-2015-8629.patch
-d87154deff5284b1a22d0c31de1b3c6276e4c2a94d7951b3cb31ed1b2ef405da CVE-2015-8630.patch
-7c1860aeba4b0712b1fd0b46ed6acc882f36a5b5b7cbcaa8e496baca65bc881a CVE-2015-8631.patch
-77b1fc7ce4ba5fd6360204e023a8984799b38252d60bac9d988011067b851f78 CVE-2016-3119.patch
213a5b04f091e4644e856aabc38da586bd86c4616ab15f00eefca52fca7137d6 krb5kadmind.initd
577842c7fe4639a8e9dd349da40e514284dd53440bb71be58283faaf18508f9a krb5kdc.initd
1644639d83791bd871f3c89a53a7052ab52994d3ef03d1d675d4217130c1fa94 krb5kpropd.initd"
-sha512sums="b33a85b37f6038e34ba4038c9d1cc6a0df027652cbeccd24e39b323a1ed1bc16305099df04654c80ba7e6b56bd3d3c2df95758add888f9ef8535cb78443684ff krb5-1.14.tar.gz
+sha512sums="97f42bb7e0f69e337b949b451bf925f604e7ef9336c32bd4d62224a8c4a37e631f5a6fc01016bbdf268bbb60fa58712e244e00a1ab5a8bceede6a676482235aa krb5-1.14.3.tar.gz
5a3782ff17b383f8cd0415fd13538ab56afd788130d6ad640e9f2682b7deaae7f25713ce358058ed771091040dccf62a3bc87e6fd473d505ec189a95debcc801 mit-krb5_krb5-config_LDFLAGS.patch
-a4791794fc8cd675605ed0f9d39b099b2e83713c7038648529906490c36b1e92739f05ba6f5a1be9923459a01b45ffb04129e23313873fea2fd41c45f7f42f90 CVE-2015-8629.patch
-c91415ff810ea1b3d8ba80d005bc40bb3595be4b7610b69d6c8c97bdcb290c1eb400997ccb091863d558bfb8a4cbb8f00557a690f60c0ada700ba76194960b0a CVE-2015-8630.patch
-59b70cf6aa3f462fe8dab0f02e7f649f9615c5e40ad43517a9b9febd2c5d87b0d38f3e620ad6dd006c9ecbc9a4bbcab39655e518c6d37fbe74f40a888545ae79 CVE-2015-8631.patch
-0c2bdab9b93e48c3f2c06dbd3196bc1e5aad7b9b969c1b43e1147d8885d78206854900a78d32f4a5813bc0e3297e6bfec344f2878025c02be94d9675f04e8268 CVE-2016-3119.patch
43b9885b7eb8d0d60920def688de482f2b1701288f9acb1bb21dc76b2395428ff304961959eb04ba5eafd0412bae35668d6d2c8223424b9337bc051eadf51682 krb5kadmind.initd
ede15f15bbbc9d0227235067abe15245bb9713aea260d397379c63275ce74aea0db6c91c15d599e40c6e89612d76f3a0f8fdd21cbafa3f30d426d4310d3e2cec krb5kdc.initd
45be0d421efd41e9dd056125a750c90856586e990317456b68170d733b03cba9ecd18ab87603b20e49575e7839fb4a6d628255533f2631f9e8ddb7f3cc493a90 krb5kpropd.initd"
diff --git a/main/krb5/CVE-2015-8629.patch b/main/krb5/CVE-2015-8629.patch
deleted file mode 100644
index 1106460205..0000000000
--- a/main/krb5/CVE-2015-8629.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-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)
diff --git a/main/krb5/CVE-2015-8630.patch b/main/krb5/CVE-2015-8630.patch
deleted file mode 100644
index 72fefeb896..0000000000
--- a/main/krb5/CVE-2015-8630.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From b863de7fbf080b15e347a736fdda0a82d42f4f6b Mon Sep 17 00:00:00 2001
-From: Greg Hudson <ghudson@mit.edu>
-Date: Fri, 8 Jan 2016 12:52:28 -0500
-Subject: [PATCH] Check for null kadm5 policy name [CVE-2015-8630]
-
-In kadm5_create_principal_3() and kadm5_modify_principal(), check for
-entry->policy being null when KADM5_POLICY is included in the mask.
-
-CVE-2015-8630:
-
-In MIT krb5 1.12 and later, an authenticated attacker with permission
-to modify a principal entry can cause kadmind to dereference a null
-pointer by supplying a null policy value but including KADM5_POLICY in
-the mask.
-
- CVSSv2 Vector: AV:N/AC:H/Au:S/C:N/I:N/A:C/E:POC/RL:OF/RC:C
-
-ticket: 8342 (new)
-target_version: 1.14-next
-target_version: 1.13-next
-tags: pullup
----
- src/lib/kadm5/srv/svr_principal.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/src/lib/kadm5/srv/svr_principal.c b/src/lib/kadm5/srv/svr_principal.c
-index 5b95fa3..1d4365c 100644
---- a/src/lib/kadm5/srv/svr_principal.c
-+++ b/src/lib/kadm5/srv/svr_principal.c
-@@ -395,6 +395,8 @@ kadm5_create_principal_3(void *server_handle,
- /*
- * Argument sanity checking, and opening up the DB
- */
-+ if (entry == NULL)
-+ return EINVAL;
- if(!(mask & KADM5_PRINCIPAL) || (mask & KADM5_MOD_NAME) ||
- (mask & KADM5_MOD_TIME) || (mask & KADM5_LAST_PWD_CHANGE) ||
- (mask & KADM5_MKVNO) || (mask & KADM5_AUX_ATTRIBUTES) ||
-@@ -403,12 +405,12 @@ kadm5_create_principal_3(void *server_handle,
- return KADM5_BAD_MASK;
- if ((mask & KADM5_KEY_DATA) && entry->n_key_data != 0)
- return KADM5_BAD_MASK;
-+ if((mask & KADM5_POLICY) && entry->policy == NULL)
-+ return KADM5_BAD_MASK;
- if((mask & KADM5_POLICY) && (mask & KADM5_POLICY_CLR))
- return KADM5_BAD_MASK;
- if((mask & ~ALL_PRINC_MASK))
- return KADM5_BAD_MASK;
-- if (entry == NULL)
-- return EINVAL;
-
- /*
- * Check to see if the principal exists
-@@ -643,6 +645,8 @@ kadm5_modify_principal(void *server_handle,
-
- krb5_clear_error_message(handle->context);
-
-+ if(entry == NULL)
-+ return EINVAL;
- if((mask & KADM5_PRINCIPAL) || (mask & KADM5_LAST_PWD_CHANGE) ||
- (mask & KADM5_MOD_TIME) || (mask & KADM5_MOD_NAME) ||
- (mask & KADM5_MKVNO) || (mask & KADM5_AUX_ATTRIBUTES) ||
-@@ -651,10 +655,10 @@ kadm5_modify_principal(void *server_handle,
- return KADM5_BAD_MASK;
- if((mask & ~ALL_PRINC_MASK))
- return KADM5_BAD_MASK;
-+ if((mask & KADM5_POLICY) && entry->policy == NULL)
-+ return KADM5_BAD_MASK;
- if((mask & KADM5_POLICY) && (mask & KADM5_POLICY_CLR))
- return KADM5_BAD_MASK;
-- if(entry == (kadm5_principal_ent_t) NULL)
-- return EINVAL;
- if (mask & KADM5_TL_DATA) {
- tl_data_orig = entry->tl_data;
- while (tl_data_orig) {
diff --git a/main/krb5/CVE-2015-8631.patch b/main/krb5/CVE-2015-8631.patch
deleted file mode 100644
index 038ad48100..0000000000
--- a/main/krb5/CVE-2015-8631.patch
+++ /dev/null
@@ -1,570 +0,0 @@
-From 83ed75feba32e46f736fcce0d96a0445f29b96c2 Mon Sep 17 00:00:00 2001
-From: Greg Hudson <ghudson@mit.edu>
-Date: Fri, 8 Jan 2016 13:16:54 -0500
-Subject: [PATCH] Fix leaks in kadmin server stubs [CVE-2015-8631]
-
-In each kadmind server stub, initialize the client_name and
-server_name variables, and release them in the cleanup handler. Many
-of the stubs will otherwise leak the client and server name if
-krb5_unparse_name() fails. Also make sure to free the prime_arg
-variables in rename_principal_2_svc(), or we can leak the first one if
-unparsing the second one fails. Discovered by Simo Sorce.
-
-CVE-2015-8631:
-
-In all versions of MIT krb5, an authenticated attacker can cause
-kadmind to leak memory by supplying a null principal name in a request
-which uses one. Repeating these requests will eventually cause
-kadmind to exhaust all available memory.
-
- CVSSv2 Vector: AV:N/AC:L/Au:S/C:N/I:N/A:C/E:POC/RL:OF/RC:C
-
-ticket: 8343 (new)
-target_version: 1.14-next
-target_version: 1.13-next
-tags: pullup
----
- src/kadmin/server/server_stubs.c | 151 ++++++++++++++++++++-------------------
- 1 file changed, 77 insertions(+), 74 deletions(-)
-
-diff --git a/src/kadmin/server/server_stubs.c b/src/kadmin/server/server_stubs.c
-index 1879dc6..6ac797e 100644
---- a/src/kadmin/server/server_stubs.c
-+++ b/src/kadmin/server/server_stubs.c
-@@ -334,7 +334,8 @@ create_principal_2_svc(cprinc_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name, service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- restriction_t *rp;
-@@ -382,10 +383,10 @@ create_principal_2_svc(cprinc_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-- gss_release_buffer(&minor_stat, &client_name);
-- gss_release_buffer(&minor_stat, &service_name);
-
- exit_func:
-+ gss_release_buffer(&minor_stat, &client_name);
-+ gss_release_buffer(&minor_stat, &service_name);
- free_server_handle(handle);
- return &ret;
- }
-@@ -395,7 +396,8 @@ create_principal3_2_svc(cprinc3_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name, service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- restriction_t *rp;
-@@ -444,10 +446,10 @@ create_principal3_2_svc(cprinc3_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-- gss_release_buffer(&minor_stat, &client_name);
-- gss_release_buffer(&minor_stat, &service_name);
-
- exit_func:
-+ gss_release_buffer(&minor_stat, &client_name);
-+ gss_release_buffer(&minor_stat, &service_name);
- free_server_handle(handle);
- return &ret;
- }
-@@ -457,8 +459,8 @@ delete_principal_2_svc(dprinc_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -501,10 +503,10 @@ delete_principal_2_svc(dprinc_arg *arg, struct svc_req *rqstp)
-
- }
- free(prime_arg);
-- gss_release_buffer(&minor_stat, &client_name);
-- gss_release_buffer(&minor_stat, &service_name);
-
- exit_func:
-+ gss_release_buffer(&minor_stat, &client_name);
-+ gss_release_buffer(&minor_stat, &service_name);
- free_server_handle(handle);
- return &ret;
- }
-@@ -514,8 +516,8 @@ modify_principal_2_svc(mprinc_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- restriction_t *rp;
-@@ -559,9 +561,9 @@ modify_principal_2_svc(mprinc_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -570,10 +572,9 @@ generic_ret *
- rename_principal_2_svc(rprinc_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
-- char *prime_arg1,
-- *prime_arg2;
-- gss_buffer_desc client_name,
-- service_name;
-+ char *prime_arg1 = NULL, *prime_arg2 = NULL;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- restriction_t *rp;
-@@ -655,11 +656,11 @@ rename_principal_2_svc(rprinc_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
-
- }
-+exit_func:
- free(prime_arg1);
- free(prime_arg2);
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -669,8 +670,8 @@ get_principal_2_svc(gprinc_arg *arg, struct svc_req *rqstp)
- {
- static gprinc_ret ret;
- char *prime_arg, *funcname;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -719,9 +720,9 @@ get_principal_2_svc(gprinc_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -731,8 +732,8 @@ get_princs_2_svc(gprincs_arg *arg, struct svc_req *rqstp)
- {
- static gprincs_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -777,9 +778,9 @@ get_princs_2_svc(gprincs_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
-
- }
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -789,8 +790,8 @@ chpass_principal_2_svc(chpass_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -840,9 +841,9 @@ chpass_principal_2_svc(chpass_arg *arg, struct svc_req *rqstp)
- }
-
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -852,8 +853,8 @@ chpass_principal3_2_svc(chpass3_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -909,9 +910,9 @@ chpass_principal3_2_svc(chpass3_arg *arg, struct svc_req *rqstp)
- }
-
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -921,8 +922,8 @@ setv4key_principal_2_svc(setv4key_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -969,9 +970,9 @@ setv4key_principal_2_svc(setv4key_arg *arg, struct svc_req *rqstp)
- }
-
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -981,8 +982,8 @@ setkey_principal_2_svc(setkey_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1029,9 +1030,9 @@ setkey_principal_2_svc(setkey_arg *arg, struct svc_req *rqstp)
- }
-
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1041,8 +1042,8 @@ setkey_principal3_2_svc(setkey3_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1092,9 +1093,9 @@ setkey_principal3_2_svc(setkey3_arg *arg, struct svc_req *rqstp)
- }
-
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1106,8 +1107,8 @@ chrand_principal_2_svc(chrand_arg *arg, struct svc_req *rqstp)
- krb5_keyblock *k;
- int nkeys;
- char *prime_arg, *funcname;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1164,9 +1165,9 @@ chrand_principal_2_svc(chrand_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1178,8 +1179,8 @@ chrand_principal3_2_svc(chrand3_arg *arg, struct svc_req *rqstp)
- krb5_keyblock *k;
- int nkeys;
- char *prime_arg, *funcname;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1241,9 +1242,9 @@ chrand_principal3_2_svc(chrand3_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1253,8 +1254,8 @@ create_policy_2_svc(cpol_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1295,9 +1296,9 @@ create_policy_2_svc(cpol_arg *arg, struct svc_req *rqstp)
- if (errmsg != NULL)
- krb5_free_error_message(handle->context, errmsg);
- }
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1307,8 +1308,8 @@ delete_policy_2_svc(dpol_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1347,9 +1348,9 @@ delete_policy_2_svc(dpol_arg *arg, struct svc_req *rqstp)
- if (errmsg != NULL)
- krb5_free_error_message(handle->context, errmsg);
- }
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1359,8 +1360,8 @@ modify_policy_2_svc(mpol_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1400,9 +1401,9 @@ modify_policy_2_svc(mpol_arg *arg, struct svc_req *rqstp)
- if (errmsg != NULL)
- krb5_free_error_message(handle->context, errmsg);
- }
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1413,8 +1414,8 @@ get_policy_2_svc(gpol_arg *arg, struct svc_req *rqstp)
- static gpol_ret ret;
- kadm5_ret_t ret2;
- char *prime_arg, *funcname;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_principal_ent_rec caller_ent;
- kadm5_server_handle_t handle;
-@@ -1475,9 +1476,9 @@ get_policy_2_svc(gpol_arg *arg, struct svc_req *rqstp)
- log_unauth(funcname, prime_arg,
- &client_name, &service_name, rqstp);
- }
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
-
-@@ -1488,8 +1489,8 @@ get_pols_2_svc(gpols_arg *arg, struct svc_req *rqstp)
- {
- static gpols_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1531,9 +1532,9 @@ get_pols_2_svc(gpols_arg *arg, struct svc_req *rqstp)
- if (errmsg != NULL)
- krb5_free_error_message(handle->context, errmsg);
- }
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1541,7 +1542,8 @@ get_pols_2_svc(gpols_arg *arg, struct svc_req *rqstp)
- getprivs_ret * get_privs_2_svc(krb5_ui_4 *arg, struct svc_req *rqstp)
- {
- static getprivs_ret ret;
-- gss_buffer_desc client_name, service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1571,9 +1573,9 @@ getprivs_ret * get_privs_2_svc(krb5_ui_4 *arg, struct svc_req *rqstp)
- if (errmsg != NULL)
- krb5_free_error_message(handle->context, errmsg);
-
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1583,7 +1585,8 @@ purgekeys_2_svc(purgekeys_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg, *funcname;
-- gss_buffer_desc client_name, service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
-
-@@ -1629,9 +1632,9 @@ purgekeys_2_svc(purgekeys_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1641,8 +1644,8 @@ get_strings_2_svc(gstrings_arg *arg, struct svc_req *rqstp)
- {
- static gstrings_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1688,9 +1691,9 @@ get_strings_2_svc(gstrings_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1700,8 +1703,8 @@ set_string_2_svc(sstring_arg *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
- char *prime_arg;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- OM_uint32 minor_stat;
- kadm5_server_handle_t handle;
- const char *errmsg = NULL;
-@@ -1744,9 +1747,9 @@ set_string_2_svc(sstring_arg *arg, struct svc_req *rqstp)
- krb5_free_error_message(handle->context, errmsg);
- }
- free(prime_arg);
-+exit_func:
- gss_release_buffer(&minor_stat, &client_name);
- gss_release_buffer(&minor_stat, &service_name);
--exit_func:
- free_server_handle(handle);
- return &ret;
- }
-@@ -1754,8 +1757,8 @@ set_string_2_svc(sstring_arg *arg, struct svc_req *rqstp)
- generic_ret *init_2_svc(krb5_ui_4 *arg, struct svc_req *rqstp)
- {
- static generic_ret ret;
-- gss_buffer_desc client_name,
-- service_name;
-+ gss_buffer_desc client_name = GSS_C_EMPTY_BUFFER;
-+ gss_buffer_desc service_name = GSS_C_EMPTY_BUFFER;
- kadm5_server_handle_t handle;
- OM_uint32 minor_stat;
- const char *errmsg = NULL;
-@@ -1797,10 +1800,10 @@ generic_ret *init_2_svc(krb5_ui_4 *arg, struct svc_req *rqstp)
- rqstp->rq_cred.oa_flavor);
- if (errmsg != NULL)
- krb5_free_error_message(NULL, errmsg);
-- gss_release_buffer(&minor_stat, &client_name);
-- gss_release_buffer(&minor_stat, &service_name);
-
- exit_func:
-+ gss_release_buffer(&minor_stat, &client_name);
-+ gss_release_buffer(&minor_stat, &service_name);
- return(&ret);
- }
-
diff --git a/main/krb5/CVE-2016-3119.patch b/main/krb5/CVE-2016-3119.patch
deleted file mode 100644
index 4e94534e98..0000000000
--- a/main/krb5/CVE-2016-3119.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 08c642c09c38a9c6454ab43a9b53b2a89b9eef99 Mon Sep 17 00:00:00 2001
-From: Greg Hudson <ghudson@mit.edu>
-Date: Mon, 14 Mar 2016 17:26:34 -0400
-Subject: [PATCH] Fix LDAP null deref on empty arg [CVE-2016-3119]
-
-In the LDAP KDB module's process_db_args(), strtok_r() may return NULL
-if there is an empty string in the db_args array. Check for this case
-and avoid dereferencing a null pointer.
-
-CVE-2016-3119:
-
-In MIT krb5 1.6 and later, an authenticated attacker with permission
-to modify a principal entry can cause kadmind to dereference a null
-pointer by supplying an empty DB argument to the modify_principal
-command, if kadmind is configured to use the LDAP KDB module.
-
- CVSSv2 Vector: AV:N/AC:H/Au:S/C:N/I:N/A:C/E:H/RL:OF/RC:ND
-
-ticket: 8383 (new)
-target_version: 1.14-next
-target_version: 1.13-next
-tags: pullup
----
- src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c b/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
-index 6e591e1..79c4cf0 100644
---- a/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
-+++ b/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
-@@ -296,6 +296,7 @@ process_db_args(krb5_context context, char **db_args, xargs_t *xargs,
- if (db_args) {
- for (i=0; db_args[i]; ++i) {
- arg = strtok_r(db_args[i], "=", &arg_val);
-+ arg = (arg != NULL) ? arg : "";
- if (strcmp(arg, TKTPOLICY_ARG) == 0) {
- dptr = &xargs->tktpolicydn;
- } else {