summaryrefslogtreecommitdiff
path: root/sys/src/cmd/tcs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-05-11 22:29:47 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-05-11 22:29:47 +0200
commit7388792a124756a528666cb5c375ee919db9ca11 (patch)
treecdd61a80aff4b094a2c4f3bdfaa7637abdbead9c /sys/src/cmd/tcs
parent14cd6df332475cb6535b638104283ab12ae609c6 (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.c2
-rw-r--r--sys/src/cmd/tcs/conv_gb.c2
-rw-r--r--sys/src/cmd/tcs/conv_gbk.c2
-rw-r--r--sys/src/cmd/tcs/conv_jis.c6
-rw-r--r--sys/src/cmd/tcs/conv_ksc.c2
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;