code: plan9front

Download patch

ref: 32665f51c7f5637e96fa0713584493e7060a8e98
parent: 9d15403fda575ab73c5501970fe3835265b05aee
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Oct 31 08:40:47 EDT 2021

libsec: no point in checking for "xn--" marker, just call idn2utf().

--- a/sys/src/libsec/port/x509.c
+++ b/sys/src/libsec/port/x509.c
@@ -141,6 +141,10 @@
 #define CLASS_MASK 0xC0
 #define MAXOBJIDLEN 20
 
+enum {
+	Domlen = 256,
+};
+
 static int ber_decode(uchar** pp, uchar* pend, Elem* pelem);
 static int tag_decode(uchar** pp, uchar* pend, Tag* ptag, int* pisconstr);
 static int length_decode(uchar** pp, uchar* pend, int* plength);
@@ -2268,8 +2272,7 @@
 		}
 		strncpy(name, subject, i);
 	}
-	if(strncmp(subject+i, "xn--", 4) != 0
-	|| idn2utf(subject+i, name+i, nname-i) < 0){
+	if(idn2utf(subject+i, name+i, nname-i) < 0){
 botch:
 		strncpy(name+i, subject+i, nname-i);
 	}
@@ -2618,7 +2621,7 @@
 static Elem
 mkaltname(char *s)
 {
-	char buf[256], *at;
+	char buf[Domlen], *at;
 	Elem e;
 	int i;
 
@@ -2734,7 +2737,7 @@
 	Elem eext, ealt, edn;
 	Elist *el, *l;
 	Ints *oid;
-	char *alt, *e, buf[256];
+	char *alt, *e, buf[Domlen];
 	int len;
 
 	if(name == nil || nname < 1 || ext == nil)