tcsh/tcsh-6.14.00-wide-crash.patch
Miloslav Trmac 5533df3a65 - Fix a crash when reading scripts with multibyte characters (#183267)
- Block SIGINT while waiting for children (#177366)
2006-03-18 03:19:31 +00:00

28 lines
853 B
Diff

--- tcsh-6.14.00/sh.lex.c.wide-crash 2006-02-28 03:34:58.000000000 +0100
+++ tcsh-6.14.00/sh.lex.c 2006-02-28 03:35:31.000000000 +0100
@@ -1710,13 +1710,13 @@
break;
partial += r;
i = 0;
- while (i < partial) {
+ while (i < partial && nchars != 0) {
int len;
len = normal_mbtowc(buf + res, cbuf + i, partial - i);
if (len == -1) {
reset_mbtowc();
- if (partial < MB_LEN_MAX && r > 0)
+ if (partial - i < MB_LEN_MAX && r > 0)
/* Maybe a partial character and there is still a chance
to read more */
break;
@@ -1735,7 +1735,7 @@
if (i != partial)
memmove(cbuf, cbuf + i, partial - i);
partial -= i;
- } while (partial != 0);
+ } while (partial != 0 && nchars != 0);
/* Throwing away possible partial multibyte characters on error */
return res != 0 ? res : r;
}