Blame SOURCES/gnutls-3.3.26-remove-status-req-ext-parsing.patch

10790f
diff --git a/lib/ext/status_request.c b/lib/ext/status_request.c
10790f
index 8cefc61..c7c065e 100644
10790f
--- a/lib/ext/status_request.c
10790f
+++ b/lib/ext/status_request.c
10790f
@@ -1,5 +1,6 @@
10790f
 /*
10790f
- * Copyright (C) 2012 Free Software Foundation, Inc.
10790f
+ * Copyright (C) 2012-2017 Free Software Foundation, Inc.
10790f
+ * Copyright (C) 2017 Red Hat, Inc.
10790f
  *
10790f
  * Author: Simon Josefsson, Nikos Mavrogiannopoulos
10790f
  *
10790f
@@ -66,18 +67,6 @@ typedef struct {
10790f
       opaque Extensions<0..2^16-1>;
10790f
 */
10790f
 
10790f
-static void deinit_responder_id(status_request_ext_st *priv)
10790f
-{
10790f
-unsigned i;
10790f
-
10790f
-	for (i = 0; i < priv->responder_id_size; i++)
10790f
-		gnutls_free(priv->responder_id[i].data);
10790f
-
10790f
-	gnutls_free(priv->responder_id);
10790f
-	priv->responder_id = NULL;
10790f
-	priv->responder_id_size = 0;
10790f
-}
10790f
-
10790f
 
10790f
 static int
10790f
 client_send(gnutls_session_t session,
10790f
@@ -132,8 +121,8 @@ server_recv(gnutls_session_t session,
10790f
 	    status_request_ext_st * priv,
10790f
 	    const uint8_t * data, size_t size)
10790f
 {
10790f
-	size_t i;
10790f
 	ssize_t data_size = size;
10790f
+	unsigned rid_bytes = 0;
10790f
 
10790f
 	/* minimum message is type (1) + responder_id_list (2) +
10790f
 	   request_extension (2) = 5 */
10790f
@@ -152,43 +141,17 @@ server_recv(gnutls_session_t session,
10790f
 	DECR_LEN(data_size, 1);
10790f
 	data++;
10790f
 
10790f
-	priv->responder_id_size = _gnutls_read_uint16(data);
10790f
+	rid_bytes = _gnutls_read_uint16(data);
10790f
 
10790f
 	DECR_LEN(data_size, 2);
10790f
-	data += 2;
10790f
+	/*data += 2;*/
10790f
 
10790f
-	if (data_size <= (ssize_t) (priv->responder_id_size * 2))
10790f
+	/* sanity check only, we don't use any of the data below */
10790f
+
10790f
+	if (data_size < (ssize_t)rid_bytes)
10790f
 		return
10790f
 		    gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
10790f
 
10790f
-	if (priv->responder_id != NULL)
10790f
-		deinit_responder_id(priv);
10790f
-
10790f
-	priv->responder_id = gnutls_calloc(1, priv->responder_id_size
10790f
-					   * sizeof(*priv->responder_id));
10790f
-	if (priv->responder_id == NULL)
10790f
-		return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
10790f
-
10790f
-	for (i = 0; i < priv->responder_id_size; i++) {
10790f
-		size_t l;
10790f
-
10790f
-		DECR_LEN(data_size, 2);
10790f
-
10790f
-		l = _gnutls_read_uint16(data);
10790f
-		data += 2;
10790f
-
10790f
-		DECR_LEN(data_size, l);
10790f
-
10790f
-		priv->responder_id[i].data = gnutls_malloc(l);
10790f
-		if (priv->responder_id[i].data == NULL)
10790f
-			return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
10790f
-
10790f
-		memcpy(priv->responder_id[i].data, data, l);
10790f
-		priv->responder_id[i].size = l;
10790f
-
10790f
-		data += l;
10790f
-	}
10790f
-
10790f
 	return 0;
10790f
 }
10790f
 
10790f
@@ -472,11 +435,18 @@ gnutls_certificate_set_ocsp_status_request_file
10790f
 static void _gnutls_status_request_deinit_data(extension_priv_data_t epriv)
10790f
 {
10790f
 	status_request_ext_st *priv = epriv.ptr;
10790f
+	unsigned i;
10790f
 
10790f
 	if (priv == NULL)
10790f
 		return;
10790f
 
10790f
-	deinit_responder_id(priv);
10790f
+	if (priv->responder_id != NULL) {
10790f
+		for (i = 0; i < priv->responder_id_size; i++)
10790f
+			gnutls_free(priv->responder_id[i].data);
10790f
+
10790f
+		gnutls_free(priv->responder_id);
10790f
+	}
10790f
+
10790f
 	gnutls_free(priv->request_extensions.data);
10790f
 	gnutls_free(priv->response.data);
10790f
 	gnutls_free(priv);