about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--iconvdata/big5hkscs.c5
-rwxr-xr-xiconvdata/tst-table.sh9
-rwxr-xr-xiconvdata/tst-tables.sh15
4 files changed, 26 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index c24b95e2f5..212eaa8274 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2000-09-07  Ulrich Drepper  <drepper@redhat.com>
 
+	* iconvdata/tst-tables.sh: Actually return with an error if
+	something goes wrong.
+	* iconvdata/tst-table.sh: Return with an error if any of the cmp fails.
+	* iconvdata/big5hkscs.c (BODY of FROM_LOOP): Reject 0xff as input.
+
 	* iconvdata/tst-tables.sh: Add BIG5HKSCS.
 
 	* iconvdata/tst-table-to.c (main): Correct cast in iconv call.
diff --git a/iconvdata/big5hkscs.c b/iconvdata/big5hkscs.c
index e5097c75c9..316baa1e5f 100644
--- a/iconvdata/big5hkscs.c
+++ b/iconvdata/big5hkscs.c
@@ -11727,6 +11727,11 @@ static struct
 									      \
 	inptr += 2;							      \
       }									      \
+    else if (__builtin_expect (ch, 0) == 0xff)				      \
+      {									      \
+	result = __GCONV_ILLEGAL_INPUT;					      \
+	break;								      \
+      }									      \
     else								      \
       ++inptr;								      \
 									      \
diff --git a/iconvdata/tst-table.sh b/iconvdata/tst-table.sh
index 4cd2f6e29b..9b3fcc3dad 100755
--- a/iconvdata/tst-table.sh
+++ b/iconvdata/tst-table.sh
@@ -61,15 +61,18 @@ diff ${objpfx}tst-${charset}.table ${objpfx}tst-${charset}.inverse.table | \
   grep '^[<>]' | sed -e 's,^. ,,' > ${objpfx}tst-${charset}.irreversible.table
 
 # Check 1: charmap and iconv forward should be identical.
-cmp -s ${objpfx}tst-${charset}.charmap.table ${objpfx}tst-${charset}.table
+cmp -s ${objpfx}tst-${charset}.charmap.table ${objpfx}tst-${charset}.table ||
+exit 1
 
 # Check 2: the difference between the two iconv directions.
 if test -f ${irreversible}; then
   cat ${objpfx}tst-${charset}.charmap.table ${irreversible} | sort | uniq -u \
     > ${objpfx}tst-${charset}.tmp.table
-  cmp -s ${objpfx}tst-${charset}.tmp.table ${objpfx}tst-${charset}.inverse.table
+  cmp -s ${objpfx}tst-${charset}.tmp.table ${objpfx}tst-${charset}.inverse.table ||
+  exit 1
 else
-  cmp -s ${objpfx}tst-${charset}.table ${objpfx}tst-${charset}.inverse.table
+  cmp -s ${objpfx}tst-${charset}.table ${objpfx}tst-${charset}.inverse.table ||
+  exit 1
 fi
 
 exit 0
diff --git a/iconvdata/tst-tables.sh b/iconvdata/tst-tables.sh
index 202b52f09f..8692b2a86b 100755
--- a/iconvdata/tst-tables.sh
+++ b/iconvdata/tst-tables.sh
@@ -179,7 +179,7 @@ cat <<EOF |
   ISO-IR-197
   TIS-620
   KOI8-U
-  ISIRI-3342
+  #ISIRI-3342                         This charset concept is completely broken
   #
   # Multibyte encodings come here
   #
@@ -205,9 +205,14 @@ cat <<EOF |
 EOF
 while read charset charmap; do
   case ${charset} in \#*) continue;; esac
-  echo "Testing ${charset}" 1>&2
-  ./tst-table.sh ${common_objpfx} ${objpfx} ${charset} ${charmap} \
-  || { echo "failed: ./tst-table.sh ${common_objpfx} ${objpfx} ${charset} ${charmap}"; status=1; }
+  echo -n "Testing ${charset}" 1>&2
+  if ./tst-table.sh ${common_objpfx} ${objpfx} ${charset} ${charmap}; then
+    echo 1>&2
+  else
+    echo "failed: ./tst-table.sh ${common_objpfx} ${objpfx} ${charset} ${charmap}"
+    echo " *** FAILED ***" 1>&2
+    exit 1
+  fi
 done
 
-exit $status
+exit $?