Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/bin/csh PR/45856: Bernhard "Burnhard" Riedel: Infinite loop ...



details:   https://anonhg.NetBSD.org/src/rev/3d1e60eacd9a
branches:  trunk
changeset: 772864:3d1e60eacd9a
user:      christos <christos%NetBSD.org@localhost>
date:      Thu Jan 19 02:42:53 2012 +0000

description:
PR/45856: Bernhard "Burnhard" Riedel: Infinite loop on &nbsp; input. Sending
char 160 in the input to csh, lead it to an infinite loop, because tcsh tables
counted this as a space character, but the word logic switch does not. Change
that character tables, so that this does not count as a spacing character
anymore, by syncing the table with the one from tcsh.

diffstat:

 bin/csh/char.c |  181 ++++++++++++++++++++++++++++----------------------------
 bin/csh/char.h |    3 +-
 2 files changed, 93 insertions(+), 91 deletions(-)

diffs (truncated from 326 to 300 lines):

diff -r a401587b7fe8 -r 3d1e60eacd9a bin/csh/char.c
--- a/bin/csh/char.c    Thu Jan 19 00:41:33 2012 +0000
+++ b/bin/csh/char.c    Thu Jan 19 02:42:53 2012 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: char.c,v 1.9 2003/08/07 09:05:03 agc Exp $ */
+/* $NetBSD: char.c,v 1.10 2012/01/19 02:42:53 christos Exp $ */
 
 /*-
  * Copyright (c) 1980, 1991, 1993
@@ -34,209 +34,210 @@
 #if 0
 static char sccsid[] = "@(#)char.c     8.1 (Berkeley) 5/31/93";
 #else
-__RCSID("$NetBSD: char.c,v 1.9 2003/08/07 09:05:03 agc Exp $");
+__RCSID("$NetBSD: char.c,v 1.10 2012/01/19 02:42:53 christos Exp $");
 #endif
 #endif /* not lint */
 
 #include "char.h"
 
+/* on default same as original map */
 unsigned short _cmap[256] = {
-/*     nul             soh             stx             etx     */
+/*       0 nul           1 soh           2 stx           3 etx */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     eot             enq             ack             bel     */
+/*       4 eot           5 enq           6 ack           7 bel */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     bs              ht              nl              vt      */
+/*       8 bs            9 ht           10 nl           11 vt  */
        _CTR,           _CTR|_SP|_META, _CTR|_NL|_META, _CTR,
 
-/*     np              cr              so              si      */
+/*      12 np           13 cr           14 so           15 si  */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     dle             dc1             dc2             dc3     */
+/*      16 dle          17 dc1          18 dc2          19 dc3 */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     dc4             nak             syn             etb     */
+/*      20 dc4          21 nak          22 syn          23 etb */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     can             em              sub             esc     */
+/*      24 can          25 em           26 sub          27 esc */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     fs              gs              rs              us      */
+/*      28 fs           29 gs           30 rs           31 us  */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     sp              !               "               #       */
-       _SP|_META,      0,              _QF,            _META,
+/*      32 sp           33 !            34 "            35 #   */
+       _SP|_META,      _PUN,           _QF|_PUN,       _META|_PUN,
 
-/*     $               %               &               '       */
-       _DOL,           0,              _META|_CMD,     _QF,
+/*      36 $            37 %            38 &            39 '   */
+       _DOL|_PUN,      _PUN,           _META|_CMD|_PUN,_QF|_PUN,
 
-/*     (               )               *               +       */
-       _META|_CMD,     _META,          _GLOB,          0,
+/*      40 (            41 )            42 *            43 +   */
+       _META|_CMD|_PUN,_META|_PUN,     _GLOB|_PUN,     _PUN,
 
-/*     ,               -               .               /       */
-       0,              0,              0,              0,
+/*      44 ,            45 -            46 .            47 /   */
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     0               1               2               3       */
+/*      48 0            49 1            50 2            51 3   */
        _DIG|_XD,       _DIG|_XD,       _DIG|_XD,       _DIG|_XD,
 
-/*     4               5               6               7       */
+/*      52 4            53 5            54 6            55 7   */
        _DIG|_XD,       _DIG|_XD,       _DIG|_XD,       _DIG|_XD,
 
-/*     8               9               :               ;       */
-       _DIG|_XD,       _DIG|_XD,       0,              _META|_CMD,
+/*      56 8            57 9            58 :            59 ;   */
+       _DIG|_XD,       _DIG|_XD,       _PUN,           _META|_CMD|_PUN,
 
-/*     <               =               >               ?       */
-       _META,          0,              _META,          _GLOB,
+/*      60 <            61 =            62 >            63 ?   */
+       _META|_PUN,     _PUN,           _META|_PUN,     _GLOB|_PUN,
 
-/*     @               A               B               C       */
-       0,              _LET|_UP|_XD,   _LET|_UP|_XD,   _LET|_UP|_XD,
+/*      64 @            65 A            66 B            67 C   */
+       _PUN,           _LET|_UP|_XD,   _LET|_UP|_XD,   _LET|_UP|_XD,
 
-/*     D               E               F               G       */
+/*      68 D            69 E            70 F            71 G   */
        _LET|_UP|_XD,   _LET|_UP|_XD,   _LET|_UP|_XD,   _LET|_UP,
 
-/*     H               I               J               K       */
+/*      72 H            73 I            74 J            75 K   */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     L               M               N               O       */
+/*      76 L            77 M            78 N            79 O   */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     P               Q               R               S       */
+/*      80 P            81 Q            82 R            83 S   */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     T               U               V               W       */
+/*      84 T            85 U            86 V            87 W   */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     X               Y               Z               [       */
-       _LET|_UP,       _LET|_UP,       _LET|_UP,       _GLOB,
+/*      88 X            89 Y            90 Z            91 [   */
+       _LET|_UP,       _LET|_UP,       _LET|_UP,       _GLOB|_PUN,
 
-/*     \               ]               ^               _       */
-       _ESC,           0,              0,              0,
+/*      92 \            93 ]            94 ^            95 _   */
+       _ESC|_PUN,      _PUN,           _PUN,           _PUN,
 
-/*     `               a               b               c       */
-  _QB|_GLOB|_META,     _LET|_LOW|_XD,  _LET|_LOW|_XD,  _LET|_LOW|_XD,
+/*      96 `            97 a            98 b            99 c   */
+  _QB|_GLOB|_META|_PUN,        _LET|_LOW|_XD,  _LET|_LOW|_XD,  _LET|_LOW|_XD,
 
-/*     d               e               f               g       */
+/*     100 d           101 e           102 f           103 g   */
        _LET|_LOW|_XD,  _LET|_LOW|_XD,  _LET|_LOW|_XD,  _LET|_LOW,
 
-/*     h               i               j               k       */
+/*     104 h           105 i           106 j           107 k   */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     l               m               n               o       */
+/*     108 l           109 m           110 n           111 o   */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     p               q               r               s       */
+/*     112 p           113 q           114 r           115 s   */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     t               u               v               w       */
+/*     116 t           117 u           118 v           119 w   */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     x               y               z               {       */
-       _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _GLOB,
+/*     120 x           121 y           122 z           123 {   */
+       _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _GLOB|_PUN,
 
-/*     |               }               ~               del     */
-       _META|_CMD,     0,              0,              _CTR,
+/*     124 |           125 }           126 ~           127 del */
+       _META|_CMD|_PUN,_PUN,           _PUN,           _CTR,
 
-#if defined(SHORT_STRINGS) && !defined(KANJI)
+#ifdef SHORT_STRINGS
 /****************************************************************/
 /* 128 - 255 The below is supposedly ISO 8859/1                        */
 /****************************************************************/
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     128 (undef)     129 (undef)     130 (undef)     131 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     132 (undef)     133 (undef)     134 (undef)     135 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     136 (undef)     137 (undef)     138 (undef)     139 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     140 (undef)     141 (undef)     142 (undef)     143 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     144 (undef)     145 (undef)     146 (undef)     147 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     148 (undef)     149 (undef)     150 (undef)     151 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     152 (undef)     153 (undef)     154 (undef)     155 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     (undef)         (undef)         (undef)         (undef)         */
+/*     156 (undef)     157 (undef)     158 (undef)     159 (undef)     */
        _CTR,           _CTR,           _CTR,           _CTR,
 
-/*     nobreakspace    exclamdown      cent            sterling        */
-       _SP,            0,              0,              0,
+/*     160 nobreakspace 161 exclamdown 162 cent        163 sterling    */
+       _PUN, /* XXX */ _PUN,           _PUN,           _PUN,
 
-/*     currency        yen             brokenbar       section         */
-       0,              0,              0,              0,
+/*     164 currency    165 yen         166 brokenbar   167 section     */
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     diaeresis       copyright       ordfeminine     guillemotleft   */
-       0,              0,              0,              0,
+/*     168 diaeresis   169 copyright   170 ordfeminine 171 guillemotleft*/
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     notsign         hyphen          registered      macron          */
-       0,              0,              0,              0,
+/*     172 notsign     173 hyphen      174 registered  175 macron      */
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     degree          plusminus       twosuperior     threesuperior   */
-       0,              0,              0,              0,
+/*     176 degree      177 plusminus   178 twosuperior 179 threesuperior*/
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     acute           mu              paragraph       periodcentered  */
-       0,              0,              0,              0,
+/*     180 acute       181 mu          182 paragraph   183 periodcentered*/
+       _PUN,           _PUN, /*XXX*/   _PUN,           _PUN,
 
-/*     cedilla         onesuperior     masculine       guillemotright  */
-       0,              0,              0,              0,
+/*     184 cedilla     185 onesuperior 186 masculine   187 guillemotright*/
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     onequarter      onehalf         threequarters   questiondown    */
-       0,              0,              0,              0,
+/*     188 onequarter  189 onehalf     190 threequarters 191 questiondown*/
+       _PUN,           _PUN,           _PUN,           _PUN,
 
-/*     Agrave          Aacute          Acircumflex     Atilde          */
+/*     192 Agrave      193 Aacute      194 Acircumflex 195 Atilde      */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     Adiaeresis      Aring           AE              Ccedilla        */
+/*     196 Adiaeresis  197 Aring       198 AE          199 Ccedilla    */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     Egrave          Eacute          Ecircumflex     Ediaeresis      */
+/*     200 Egrave      201 Eacute      202 Ecircumflex 203 Ediaeresis  */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     Igrave          Iacute          Icircumflex     Idiaeresis      */
+/*     204 Igrave      205 Iacute      206 Icircumflex 207 Idiaeresis  */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     ETH             Ntilde          Ograve          Oacute          */
+/*     208 ETH         209 Ntilde      210 Ograve      211 Oacute      */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     Ocircumflex     Otilde          Odiaeresis      multiply        */
-       _LET|_UP,       _LET|_UP,       _LET|_UP,       0,
+/*     212 Ocircumflex 213 Otilde      214 Odiaeresis  215 multiply    */
+       _LET|_UP,       _LET|_UP,       _LET|_UP,       _PUN,
 
-/*     Ooblique        Ugrave          Uacute          Ucircumflex     */
+/*     216 Ooblique    217 Ugrave      218 Uacute      219 Ucircumflex */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_UP,
 
-/*     Udiaeresis      Yacute          THORN           ssharp          */
+/*     220 Udiaeresis  221 Yacute      222 THORN       223 ssharp      */
        _LET|_UP,       _LET|_UP,       _LET|_UP,       _LET|_LOW,
 
-/*     agrave          aacute          acircumflex     atilde          */
+/*     224 agrave      225 aacute      226 acircumflex 227 atilde      */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     adiaeresis      aring           ae              ccedilla        */
+/*     228 adiaeresis  229 aring       230 ae          231 ccedilla    */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     egrave          eacute          ecircumflex     ediaeresis      */
+/*     232 egrave      233 eacute      234 ecircumflex 235 ediaeresis  */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     igrave          iacute          icircumflex     idiaeresis      */
+/*     236 igrave      237 iacute      238 icircumflex 239 idiaeresis  */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     eth             ntilde          ograve          oacute          */
+/*     240 eth         241 ntilde      242 ograve      243 oacute      */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,
 
-/*     ocircumflex     otilde          odiaeresis      division        */
-       _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      0,
+/*     244 ocircumflex 245 otilde      246 odiaeresis  247 division    */
+       _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _PUN,
 
-/*     oslash          ugrave          uacute          ucircumflex     */
+/*     248 oslash      249 ugrave      250 uacute      251 ucircumflex */
        _LET|_LOW,      _LET|_LOW,      _LET|_LOW,      _LET|_LOW,



Home | Main Index | Thread Index | Old Index