diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-05-11 22:29:47 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-05-11 22:29:47 +0200 |
commit | 7388792a124756a528666cb5c375ee919db9ca11 (patch) | |
tree | cdd61a80aff4b094a2c4f3bdfaa7637abdbead9c /sys/src/cmd/tcs | |
parent | 14cd6df332475cb6535b638104283ab12ae609c6 (diff) |
tcs: prevent accidents with runes beyond 16-bit
Diffstat (limited to 'sys/src/cmd/tcs')
-rw-r--r-- | sys/src/cmd/tcs/conv_big5.c | 2 | ||||
-rw-r--r-- | sys/src/cmd/tcs/conv_gb.c | 2 | ||||
-rw-r--r-- | sys/src/cmd/tcs/conv_gbk.c | 2 | ||||
-rw-r--r-- | sys/src/cmd/tcs/conv_jis.c | 6 | ||||
-rw-r--r-- | sys/src/cmd/tcs/conv_ksc.c | 2 |
5 files changed, 7 insertions, 7 deletions
diff --git a/sys/src/cmd/tcs/conv_big5.c b/sys/src/cmd/tcs/conv_big5.c index 1ca69792b..87ecc88ae 100644 --- a/sys/src/cmd/tcs/conv_big5.c +++ b/sys/src/cmd/tcs/conv_big5.c @@ -137,7 +137,7 @@ big5_out(Rune *base, int n, long *notused) if(r < 128) *p++ = r; else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ r = tab[r]; if(r >= BIG5MAX){ *p++ = 0xA1; diff --git a/sys/src/cmd/tcs/conv_gb.c b/sys/src/cmd/tcs/conv_gb.c index 6838b7748..626323ad9 100644 --- a/sys/src/cmd/tcs/conv_gb.c +++ b/sys/src/cmd/tcs/conv_gb.c @@ -115,7 +115,7 @@ gb_out(Rune *base, int n, long *notused) if(r < 128) *p++ = r; else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ r = tab[r]; *p++ = 0xA0 + (r/100); *p++ = 0xA0 + (r%100); diff --git a/sys/src/cmd/tcs/conv_gbk.c b/sys/src/cmd/tcs/conv_gbk.c index bb0683572..9f870f126 100644 --- a/sys/src/cmd/tcs/conv_gbk.c +++ b/sys/src/cmd/tcs/conv_gbk.c @@ -106,7 +106,7 @@ gbk_out(Rune *base, int n, long *notused) if(r < 0x80) *p++ = r; else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ r = tab[r]; *p++ = (r>>8) & 0xFF; *p++ = r & 0xFF; diff --git a/sys/src/cmd/tcs/conv_jis.c b/sys/src/cmd/tcs/conv_jis.c index 862751411..61d0aa046 100644 --- a/sys/src/cmd/tcs/conv_jis.c +++ b/sys/src/cmd/tcs/conv_jis.c @@ -438,7 +438,7 @@ jisjis_out(Rune *base, int n, long *notused) } *p++ = r; } else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ if(state != jp2022){ *p++ = ESC; *p++ = '$'; *p++ = 'B'; state = jp2022; @@ -478,7 +478,7 @@ msjis_out(Rune *base, int n, long *notused) if(r < 128) *p++ = r; else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ hi = tab[r]/100 + ' '; lo = tab[r]%100 + ' '; J2S(hi, lo); @@ -517,7 +517,7 @@ ujis_out(Rune *base, int n, long *notused) if(r < 128) *p++ = r; else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ *p++ = 0x80 | (tab[r]/100 + ' '); *p++ = 0x80 | (tab[r]%100 + ' '); continue; diff --git a/sys/src/cmd/tcs/conv_ksc.c b/sys/src/cmd/tcs/conv_ksc.c index 293ffad1a..74a40a591 100644 --- a/sys/src/cmd/tcs/conv_ksc.c +++ b/sys/src/cmd/tcs/conv_ksc.c @@ -141,7 +141,7 @@ uksc_out(Rune *base, int n, long *notused) if(r < 128) *p++ = r; else { - if(tab[r] != -1){ + if(r < NRUNE && tab[r] != -1){ *p++ = 0x80 | (tab[r]/94 + 0x21); *p++ = 0x80 | (tab[r]%94 + 0x21); continue; |