about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--locale/programs/charmap.c12
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 4f94e49319..35db6ba8c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* locale/programs/charmap.c (new_width): Check whether byte
+	sequences for both ends of range have the same length.
+
 2002-01-09  Jakub Jelinek  <jakub@redhat.com>
 
 	* elf/elf.h (SHN_UNDEF): Remove duplicate definition.
diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c
index 7840242d8d..815a28d419 100644
--- a/locale/programs/charmap.c
+++ b/locale/programs/charmap.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996,1998,1999,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -868,6 +868,16 @@ new_width (struct linereader *cmfile, struct charmap_t *result,
 	  lr_error (cmfile, _("unknown character `%s'"), to);
 	  return;
 	}
+
+      /* Make sure the number of bytes for the end points of the range
+	 is correct.  */
+      if (from_val->nbytes != to_val->nbytes)
+	{
+	  lr_error (cmfile, _("\
+number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"),
+		    from_val->nbytes, to_val->nbytes);
+	  return;
+	}
     }
 
   if (result->nwidth_rules >= result->nwidth_rules_max)