texlive[60319] Build/source/texk/upmendex: upmendex: initialize

commits+takuji at tug.org commits+takuji at tug.org
Wed Aug 25 15:55:12 CEST 2021


Revision: 60319
          http://tug.org/svn/texlive?view=revision&revision=60319
Author:   takuji
Date:     2021-08-25 15:55:11 +0200 (Wed, 25 Aug 2021)
Log Message:
-----------
upmendex: initialize string, check malformed input

Modified Paths:
--------------
    trunk/Build/source/texk/upmendex/ChangeLog
    trunk/Build/source/texk/upmendex/sort.c
    trunk/Build/source/texk/upmendex/tests/upmendex.test

Added Paths:
-----------
    trunk/Build/source/texk/upmendex/tests/rule3.ist
    trunk/Build/source/texk/upmendex/tests/rule4.ist

Modified: trunk/Build/source/texk/upmendex/ChangeLog
===================================================================
--- trunk/Build/source/texk/upmendex/ChangeLog	2021-08-24 23:54:38 UTC (rev 60318)
+++ trunk/Build/source/texk/upmendex/ChangeLog	2021-08-25 13:55:11 UTC (rev 60319)
@@ -1,3 +1,10 @@
+2021-08-25  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* sort.c:
+	Initialize a string. Check malformed input for "icu_rules".
+	* tests/upmendex.test, tests/rule[34].ist:
+	Add new tests.
+
 2021-08-23  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* tests/upmendex.test, tests/rule[12].ist, tests/rule.{idx,ind}:

Modified: trunk/Build/source/texk/upmendex/sort.c
===================================================================
--- trunk/Build/source/texk/upmendex/sort.c	2021-08-24 23:54:38 UTC (rev 60318)
+++ trunk/Build/source/texk/upmendex/sort.c	2021-08-25 13:55:11 UTC (rev 60319)
@@ -17,7 +17,7 @@
 {
 	int i,order;
 	UErrorCode status;
-	UChar rules[STYBUFSIZE];
+	UChar rules[STYBUFSIZE] = {'\0'};
 
 	for (order=1,i=0;;i++) {
 		switch (character_order[i]) {
@@ -324,10 +324,11 @@
 	}
 }
 
-static int unescape(const unsigned char *src, UChar *dist)
+static int unescape(const unsigned char *src, UChar *dest)
 {
-	int i,j,k;
+	int i,j,k,ret;
 	char tmp[STYBUFSIZE];
+	UErrorCode status;
 
 	for (i=j=0;i<STYBUFSIZE;i++) {
 		if (src[i]=='\0') {
@@ -336,15 +337,23 @@
 		else if (src[i]< 0x80 && (src[i+1]>=0x80 || src[i+1]=='\0')) {
 			strncpy(tmp,(char *)&src[j],i-j+1);
 			tmp[i-j+1]='\0';
-			k=u_strlen(dist);
-			u_unescape(tmp, &dist[k], STYBUFSIZE-k);
+			k=u_strlen(dest);
+			ret=u_unescape(tmp, &dest[k], STYBUFSIZE-k);
+			if (ret==0) {
+				verb_printf(efp, "\n[ICU] Escape sequence in input seems malformed.\n");
+				exit(254);
+			}
 			j=i+1;
 		}
 		else if (src[i]>=0x80 && (src[i+1]< 0x80 || src[i+1]=='\0')) {
 			strncpy(tmp,(char *)&src[j],i-j+1);
 			tmp[i-j+1]='\0';
-			k=u_strlen(dist);
-			multibyte_to_widechar(&dist[k], STYBUFSIZE-k, tmp);
+			k=u_strlen(dest);
+			u_strFromUTF8(&dest[k], STYBUFSIZE-k, NULL, tmp, -1, &status);
+			if (U_FAILURE(status)) {
+				verb_printf(efp, "\n[ICU] Input string seems malformed.: %s\n", u_errorName(status));
+				exit(254);
+			}
 			j=i+1;
 		}
 	}

Added: trunk/Build/source/texk/upmendex/tests/rule3.ist
===================================================================
--- trunk/Build/source/texk/upmendex/tests/rule3.ist	                        (rev 0)
+++ trunk/Build/source/texk/upmendex/tests/rule3.ist	2021-08-25 13:55:11 UTC (rev 60319)
@@ -0,0 +1,4 @@
+% -*- coding: latin-1 -*-
+% To test malformed input
+
+icu_rules "&a<<<A<C<<\xC7<<c<<\xE7<u<<U<<\xFC<<\xDC<b<<B"

Added: trunk/Build/source/texk/upmendex/tests/rule4.ist
===================================================================
--- trunk/Build/source/texk/upmendex/tests/rule4.ist	                        (rev 0)
+++ trunk/Build/source/texk/upmendex/tests/rule4.ist	2021-08-25 13:55:11 UTC (rev 60319)
@@ -0,0 +1,4 @@
+% -*- coding: utf-8 -*-
+% To test malformed input
+
+icu_rules "&a<<<A<C<<\U000000c7<<c<<\uE7<u<<U<<\x{fc}<<\xDC<b<<B"

Modified: trunk/Build/source/texk/upmendex/tests/upmendex.test
===================================================================
--- trunk/Build/source/texk/upmendex/tests/upmendex.test	2021-08-24 23:54:38 UTC (rev 60318)
+++ trunk/Build/source/texk/upmendex/tests/upmendex.test	2021-08-25 13:55:11 UTC (rev 60319)
@@ -55,3 +55,22 @@
 	-o rule2.ind1 -t rule2.ilg \
 	&& diff $srcdir/tests/rule.ind rule2.ind1 || exit 1
 
+# malformed input
+./upmendex -s $srcdir/tests/uni.ist -s $srcdir/tests/rule3.ist $srcdir/tests/rule.idx \
+	   -o rule3.ind1 -t rule3.ilg
+if [ $? -eq 254 ]; then
+  echo "Error check: OK"
+else
+  echo "Error check: NG"
+  exit 1
+fi
+
+./upmendex -s $srcdir/tests/uni.ist -s $srcdir/tests/rule4.ist $srcdir/tests/rule.idx \
+	-o rule4.ind1 -t rule4.ilg
+if [ $? -eq 254 ]; then
+  echo "Error check: OK"
+else
+  echo "Error check: NG"
+  exit 1
+fi
+



More information about the tex-live-commits mailing list.