summaryrefslogtreecommitdiffstats
path: root/network/krb5/patches/2009-001-patch.txt
diff options
context:
space:
mode:
Diffstat (limited to 'network/krb5/patches/2009-001-patch.txt')
-rw-r--r--network/krb5/patches/2009-001-patch.txt187
1 files changed, 0 insertions, 187 deletions
diff --git a/network/krb5/patches/2009-001-patch.txt b/network/krb5/patches/2009-001-patch.txt
deleted file mode 100644
index 7485169ae4..0000000000
--- a/network/krb5/patches/2009-001-patch.txt
+++ /dev/null
@@ -1,187 +0,0 @@
---- src/lib/gssapi/spnego/spnego_mech.c
-+++ src/lib/gssapi/spnego/spnego_mech.c
-@@ -54,8 +54,8 @@ typedef const gss_OID_desc *gss_OID_const;
-
- /* der routines defined in libgss */
- extern unsigned int gssint_der_length_size(OM_uint32);
--extern int gssint_get_der_length(unsigned char **, OM_uint32, OM_uint32*);
--extern int gssint_put_der_length(OM_uint32, unsigned char **, OM_uint32);
-+extern int gssint_get_der_length(unsigned char **, OM_uint32, unsigned int*);
-+extern int gssint_put_der_length(OM_uint32, unsigned char **, unsigned int);
-
-
- /* private routines for spnego_mechanism */
-@@ -1249,7 +1249,8 @@ spnego_gss_accept_sec_context(void *ct,
- }
- cleanup:
- if (return_token != NO_TOKEN_SEND && return_token != CHECK_MIC) {
-- tmpret = make_spnego_tokenTarg_msg(negState, sc->internal_mech,
-+ tmpret = make_spnego_tokenTarg_msg(negState,
-+ sc ? sc->internal_mech : GSS_C_NO_OID,
- &mechtok_out, mic_out,
- return_token,
- output_token);
-@@ -1802,22 +1803,16 @@ static gss_buffer_t
- get_input_token(unsigned char **buff_in, unsigned int buff_length)
- {
- gss_buffer_t input_token;
-- unsigned int bytes;
-+ unsigned int len;
-
-- if (**buff_in != OCTET_STRING)
-+ if (g_get_tag_and_length(buff_in, OCTET_STRING, buff_length, &len) < 0)
- return (NULL);
-
-- (*buff_in)++;
- input_token = (gss_buffer_t)malloc(sizeof (gss_buffer_desc));
--
- if (input_token == NULL)
- return (NULL);
-
-- input_token->length = gssint_get_der_length(buff_in, buff_length, &bytes);
-- if ((int)input_token->length == -1) {
-- free(input_token);
-- return (NULL);
-- }
-+ input_token->length = len;
- input_token->value = malloc(input_token->length);
-
- if (input_token->value == NULL) {
-@@ -1869,8 +1864,8 @@ get_mech_set(OM_uint32 *minor_status, unsigned char **buff_in,
- {
- gss_OID_set returned_mechSet;
- OM_uint32 major_status;
-- OM_uint32 length;
-- OM_uint32 bytes;
-+ int length;
-+ unsigned int bytes;
- OM_uint32 set_length;
- unsigned char *start;
- int i;
-@@ -1882,22 +1877,25 @@ get_mech_set(OM_uint32 *minor_status, unsigned char **buff_in,
- (*buff_in)++;
-
- length = gssint_get_der_length(buff_in, buff_length, &bytes);
-+ if (length < 0 || buff_length - bytes < (unsigned int)length)
-+ return NULL;
-
- major_status = gss_create_empty_oid_set(minor_status,
- &returned_mechSet);
- if (major_status != GSS_S_COMPLETE)
- return (NULL);
-
-- for (set_length = 0, i = 0; set_length < length; i++) {
-+ for (set_length = 0, i = 0; set_length < (unsigned int)length; i++) {
- gss_OID_desc *temp = get_mech_oid(minor_status, buff_in,
- buff_length - (*buff_in - start));
-- if (temp != NULL) {
-- major_status = gss_add_oid_set_member(minor_status,
-- temp, &returned_mechSet);
-- if (major_status == GSS_S_COMPLETE) {
-+ if (temp == NULL)
-+ break;
-+
-+ major_status = gss_add_oid_set_member(minor_status,
-+ temp, &returned_mechSet);
-+ if (major_status == GSS_S_COMPLETE) {
- set_length += returned_mechSet->elements[i].length +2;
- generic_gss_release_oid(minor_status, &temp);
-- }
- }
- }
-
-@@ -2097,7 +2095,7 @@ get_negTokenResp(OM_uint32 *minor_status,
- return GSS_S_DEFECTIVE_TOKEN;
- if (*ptr++ == SEQUENCE) {
- tmplen = gssint_get_der_length(&ptr, REMAIN, &bytes);
-- if (tmplen < 0)
-+ if (tmplen < 0 || REMAIN < (unsigned int)tmplen)
- return GSS_S_DEFECTIVE_TOKEN;
- }
- if (REMAIN < 1)
-@@ -2107,7 +2105,7 @@ get_negTokenResp(OM_uint32 *minor_status,
-
- if (tag == CONTEXT) {
- tmplen = gssint_get_der_length(&ptr, REMAIN, &bytes);
-- if (tmplen < 0)
-+ if (tmplen < 0 || REMAIN < (unsigned int)tmplen)
- return GSS_S_DEFECTIVE_TOKEN;
-
- if (g_get_tag_and_length(&ptr, ENUMERATED,
-@@ -2128,7 +2126,7 @@ get_negTokenResp(OM_uint32 *minor_status,
- }
- if (tag == (CONTEXT | 0x01)) {
- tmplen = gssint_get_der_length(&ptr, REMAIN, &bytes);
-- if (tmplen < 0)
-+ if (tmplen < 0 || REMAIN < (unsigned int)tmplen)
- return GSS_S_DEFECTIVE_TOKEN;
-
- *supportedMech = get_mech_oid(minor_status, &ptr, REMAIN);
-@@ -2142,7 +2140,7 @@ get_negTokenResp(OM_uint32 *minor_status,
- }
- if (tag == (CONTEXT | 0x02)) {
- tmplen = gssint_get_der_length(&ptr, REMAIN, &bytes);
-- if (tmplen < 0)
-+ if (tmplen < 0 || REMAIN < (unsigned int)tmplen)
- return GSS_S_DEFECTIVE_TOKEN;
-
- *responseToken = get_input_token(&ptr, REMAIN);
-@@ -2156,7 +2154,7 @@ get_negTokenResp(OM_uint32 *minor_status,
- }
- if (tag == (CONTEXT | 0x03)) {
- tmplen = gssint_get_der_length(&ptr, REMAIN, &bytes);
-- if (tmplen < 0)
-+ if (tmplen < 0 || REMAIN < (unsigned int)tmplen)
- return GSS_S_DEFECTIVE_TOKEN;
-
- *mechListMIC = get_input_token(&ptr, REMAIN);
-@@ -2464,6 +2462,8 @@ make_spnego_tokenTarg_msg(OM_uint32 status, gss_OID mech_wanted,
-
- if (outbuf == GSS_C_NO_BUFFER)
- return (GSS_S_DEFECTIVE_TOKEN);
-+ if (sendtoken == INIT_TOKEN_SEND && mech_wanted == GSS_C_NO_OID)
-+ return (GSS_S_DEFECTIVE_TOKEN);
-
- outbuf->length = 0;
- outbuf->value = NULL;
-@@ -2715,7 +2715,7 @@ g_get_tag_and_length(unsigned char **buf, int tag,
- &encoded_len);
- if (tmplen < 0) {
- ret = -1;
-- } else if (tmplen > buflen - (ptr - *buf)) {
-+ } else if ((unsigned int)tmplen > buflen - (ptr - *buf)) {
- ret = -1;
- } else
- ret = 0;
---- src/lib/krb5/asn.1/asn1buf.c
-+++ src/lib/krb5/asn.1/asn1buf.c
-@@ -78,11 +78,11 @@ asn1_error_code asn1buf_wrap_data(asn1buf *buf, const krb5_data *code)
-
- asn1_error_code asn1buf_imbed(asn1buf *subbuf, const asn1buf *buf, const unsigned int length, const int indef)
- {
-+ if (buf->next > buf->bound + 1) return ASN1_OVERRUN;
- subbuf->base = subbuf->next = buf->next;
- if (!indef) {
-+ if (length > (size_t)(buf->bound + 1 - buf->next)) return ASN1_OVERRUN;
- subbuf->bound = subbuf->base + length - 1;
-- if (subbuf->bound > buf->bound)
-- return ASN1_OVERRUN;
- } else /* constructed indefinite */
- subbuf->bound = buf->bound;
- return 0;
-@@ -200,6 +200,7 @@ asn1_error_code asn1buf_remove_octetstring(asn1buf *buf, const unsigned int len,
- {
- int i;
-
-+ if (buf->next > buf->bound + 1) return ASN1_OVERRUN;
- if (len > buf->bound + 1 - buf->next) return ASN1_OVERRUN;
- if (len == 0) {
- *s = 0;
-@@ -218,6 +219,7 @@ asn1_error_code asn1buf_remove_charstring(asn1buf *buf, const unsigned int len,
- {
- int i;
-
-+ if (buf->next > buf->bound + 1) return ASN1_OVERRUN;
- if (len > buf->bound + 1 - buf->next) return ASN1_OVERRUN;
- if (len == 0) {
- *s = 0;