Revert "[wpa_supplicant] Cumulative patch from b8491ae5a"

This reverts commit 878cf7bcbf2d7d8f08c3d060b8c5fbfcf0743eda.

Reason for revert: git_master/sdk_phone_armv7-sdk

Change-Id: I6070fc5c1f9c20867f6dfce90e529e35578d572e
diff --git a/src/tls/asn1.c b/src/tls/asn1.c
index a08c2e1..822f87c 100644
--- a/src/tls/asn1.c
+++ b/src/tls/asn1.c
@@ -22,36 +22,6 @@
 };
 
 
-static int asn1_valid_der_boolean(struct asn1_hdr *hdr)
-{
-	/* Enforce DER requirements for a single way of encoding a BOOLEAN */
-	if (hdr->length != 1) {
-		wpa_printf(MSG_DEBUG, "ASN.1: Unexpected BOOLEAN length (%u)",
-			   hdr->length);
-		return 0;
-	}
-
-	if (hdr->payload[0] != 0 && hdr->payload[0] != 0xff) {
-		wpa_printf(MSG_DEBUG,
-			   "ASN.1: Invalid BOOLEAN value 0x%x (DER requires 0 or 0xff)",
-			   hdr->payload[0]);
-		return 0;
-	}
-
-	return 1;
-}
-
-
-static int asn1_valid_der(struct asn1_hdr *hdr)
-{
-	if (hdr->class != ASN1_CLASS_UNIVERSAL)
-		return 1;
-	if (hdr->tag == ASN1_TAG_BOOLEAN && !asn1_valid_der_boolean(hdr))
-		return 0;
-	return 1;
-}
-
-
 int asn1_get_next(const u8 *buf, size_t len, struct asn1_hdr *hdr)
 {
 	const u8 *pos, *end;
@@ -121,8 +91,7 @@
 	}
 
 	hdr->payload = pos;
-
-	return asn1_valid_der(hdr) ? 0 : -1;
+	return 0;
 }
 
 
diff --git a/src/tls/libtommath.c b/src/tls/libtommath.c
index 7156744..4f7a148 100644
--- a/src/tls/libtommath.c
+++ b/src/tls/libtommath.c
@@ -2441,7 +2441,6 @@
 
   /* clear the carry */
   _W = 0;
-  os_memset(W, 0, sizeof(W));
   for (ix = 0; ix < pa; ix++) {
       int      tx, ty;
       int      iy;
diff --git a/src/tls/x509v3.c b/src/tls/x509v3.c
index 1bd5aa0..fa4d442 100644
--- a/src/tls/x509v3.c
+++ b/src/tls/x509v3.c
@@ -538,43 +538,9 @@
 }
 
 
-static int parse_uint2(const char *pos, size_t len)
-{
-	char buf[3];
-	int ret;
-
-	if (len < 2)
-		return -1;
-	buf[0] = pos[0];
-	buf[1] = pos[1];
-	buf[2] = 0x00;
-	if (sscanf(buf, "%2d", &ret) != 1)
-		return -1;
-	return ret;
-}
-
-
-static int parse_uint4(const char *pos, size_t len)
-{
-	char buf[5];
-	int ret;
-
-	if (len < 4)
-		return -1;
-	buf[0] = pos[0];
-	buf[1] = pos[1];
-	buf[2] = pos[2];
-	buf[3] = pos[3];
-	buf[4] = 0x00;
-	if (sscanf(buf, "%4d", &ret) != 1)
-		return -1;
-	return ret;
-}
-
-
 int x509_parse_time(const u8 *buf, size_t len, u8 asn1_tag, os_time_t *val)
 {
-	const char *pos, *end;
+	const char *pos;
 	int year, month, day, hour, min, sec;
 
 	/*
@@ -588,7 +554,6 @@
 	 */
 
 	pos = (const char *) buf;
-	end = pos + len;
 
 	switch (asn1_tag) {
 	case ASN1_TAG_UTCTIME:
@@ -597,8 +562,7 @@
 					  "UTCTime format", buf, len);
 			return -1;
 		}
-		year = parse_uint2(pos, end - pos);
-		if (year < 0) {
+		if (sscanf(pos, "%02d", &year) != 1) {
 			wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse "
 					  "UTCTime year", buf, len);
 			return -1;
@@ -615,8 +579,7 @@
 					  "GeneralizedTime format", buf, len);
 			return -1;
 		}
-		year = parse_uint4(pos, end - pos);
-		if (year < 0) {
+		if (sscanf(pos, "%04d", &year) != 1) {
 			wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse "
 					  "GeneralizedTime year", buf, len);
 			return -1;
@@ -629,40 +592,35 @@
 		return -1;
 	}
 
-	month = parse_uint2(pos, end - pos);
-	if (month < 0) {
+	if (sscanf(pos, "%02d", &month) != 1) {
 		wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse Time "
 				  "(month)", buf, len);
 		return -1;
 	}
 	pos += 2;
 
-	day = parse_uint2(pos, end - pos);
-	if (day < 0) {
+	if (sscanf(pos, "%02d", &day) != 1) {
 		wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse Time "
 				  "(day)", buf, len);
 		return -1;
 	}
 	pos += 2;
 
-	hour = parse_uint2(pos, end - pos);
-	if (hour < 0) {
+	if (sscanf(pos, "%02d", &hour) != 1) {
 		wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse Time "
 				  "(hour)", buf, len);
 		return -1;
 	}
 	pos += 2;
 
-	min = parse_uint2(pos, end - pos);
-	if (min < 0) {
+	if (sscanf(pos, "%02d", &min) != 1) {
 		wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse Time "
 				  "(min)", buf, len);
 		return -1;
 	}
 	pos += 2;
 
-	sec = parse_uint2(pos, end - pos);
-	if (sec < 0) {
+	if (sscanf(pos, "%02d", &sec) != 1) {
 		wpa_hexdump_ascii(MSG_DEBUG, "X509: Failed to parse Time "
 				  "(sec)", buf, len);
 		return -1;
@@ -815,7 +773,6 @@
 	struct asn1_hdr hdr;
 	unsigned long value;
 	size_t left;
-	const u8 *end_seq;
 
 	/*
 	 * BasicConstraints ::= SEQUENCE {
@@ -837,7 +794,6 @@
 	if (hdr.length == 0)
 		return 0;
 
-	end_seq = hdr.payload + hdr.length;
 	if (asn1_get_next(hdr.payload, hdr.length, &hdr) < 0 ||
 	    hdr.class != ASN1_CLASS_UNIVERSAL) {
 		wpa_printf(MSG_DEBUG, "X509: Failed to parse "
@@ -846,16 +802,22 @@
 	}
 
 	if (hdr.tag == ASN1_TAG_BOOLEAN) {
+		if (hdr.length != 1) {
+			wpa_printf(MSG_DEBUG, "X509: Unexpected "
+				   "Boolean length (%u) in BasicConstraints",
+				   hdr.length);
+			return -1;
+		}
 		cert->ca = hdr.payload[0];
 
-		pos = hdr.payload + hdr.length;
-		if (pos >= end_seq) {
-			/* No optional pathLenConstraint */
+		if (hdr.length == pos + len - hdr.payload) {
 			wpa_printf(MSG_DEBUG, "X509: BasicConstraints - cA=%d",
 				   cert->ca);
 			return 0;
 		}
-		if (asn1_get_next(pos, end_seq - pos, &hdr) < 0 ||
+
+		if (asn1_get_next(hdr.payload + hdr.length, len - hdr.length,
+				  &hdr) < 0 ||
 		    hdr.class != ASN1_CLASS_UNIVERSAL) {
 			wpa_printf(MSG_DEBUG, "X509: Failed to parse "
 				   "BasicConstraints");
@@ -1301,6 +1263,11 @@
 	}
 
 	if (hdr.tag == ASN1_TAG_BOOLEAN) {
+		if (hdr.length != 1) {
+			wpa_printf(MSG_DEBUG, "X509: Unexpected "
+				   "Boolean length (%u)", hdr.length);
+			return -1;
+		}
 		critical_ext = hdr.payload[0];
 		pos = hdr.payload;
 		if (asn1_get_next(pos, end - pos, &hdr) < 0 ||