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.