Introduction
Introduction Statistics Contact Development Disclaimer Help
tUsing strtol with overflow checking. - st - [fork] customized build of st, the…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 37863356b00cd41c24e10243121649473b98824f
parent be7c6d7fb09ff50127332060d771b94a3bc8e44c
Author: Christoph Lohmann <[email protected]>
Date: Mon, 25 Feb 2013 13:23:56 +0100
Using strtol with overflow checking.
Diffstat:
M st.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -1296,17 +1296,22 @@ tnewline(int first_col) {
void
csiparse(void) {
/* int noarg = 1; */
- char *p = csiescseq.buf;
+ char *p = csiescseq.buf, *np;
+ long int v;
csiescseq.narg = 0;
if(*p == '?')
csiescseq.priv = 1, p++;
while(p < csiescseq.buf+csiescseq.len) {
- while(isdigit(*p)) {
- csiescseq.arg[csiescseq.narg] *= 10;
- csiescseq.arg[csiescseq.narg] += *p++ - '0'/*, noarg =…
- }
+ np = NULL;
+ v = strtol(p, &np, 10);
+ if(v == LONG_MAX || v == LONG_MIN)
+ v = -1;
+ csiescseq.arg[csiescseq.narg] = v;
+ if(np != NULL)
+ p = np;
+
if(*p == ';' && csiescseq.narg+1 < ESC_ARG_SIZ) {
csiescseq.narg++, p++;
} else {
t@@ -2116,7 +2121,8 @@ tputc(char *c, int len) {
if(BETWEEN(ascii, 0x40, 0x7E)
|| csiescseq.len >= ESC_BUF_SIZ) {
term.esc = 0;
- csiparse(), csihandle();
+ csiparse();
+ csihandle();
}
} else if(term.esc & ESC_STR_END) {
term.esc = 0;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.