aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/examples/chkspeed.c2
-rw-r--r--lib/cookie.c4
-rw-r--r--lib/ftp.c2
-rw-r--r--lib/ldap.c2
-rw-r--r--lib/smtp.c2
-rw-r--r--lib/url.c2
-rw-r--r--src/main.c27
-rw-r--r--tests/libtest/first.c5
-rw-r--r--tests/libtest/lib521.c2
-rw-r--r--tests/libtest/lib562.c2
-rw-r--r--tests/server/rtspd.c4
-rw-r--r--tests/server/sws.c4
12 files changed, 36 insertions, 22 deletions
diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c
index d802469b8..00db5bf1d 100644
--- a/docs/examples/chkspeed.c
+++ b/docs/examples/chkspeed.c
@@ -71,7 +71,7 @@ int main(int argc, char *argv[])
} else if (strncasecmp(*argv, "-T", 2) == 0) {
prttime = 1;
} else if (strncasecmp(*argv, "-M=", 3) == 0) {
- int m = atoi(*argv + 3);
+ long m = strtol(argv+3, NULL, 10);
switch(m) {
case 1: url = URL_1M;
break;
diff --git a/lib/cookie.c b/lib/cookie.c
index 21617adce..c6460a100 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -353,8 +353,8 @@ Curl_cookie_add(struct SessionHandle *data,
break;
}
co->expires =
- atoi((*co->maxage=='\"')?&co->maxage[1]:&co->maxage[0]) +
- (long)now;
+ strtol((*co->maxage=='\"')?&co->maxage[1]:&co->maxage[0],NULL,10)
+ + (long)now;
}
else if(Curl_raw_equal("expires", name)) {
strstore(&co->expirestr, whatptr);
diff --git a/lib/ftp.c b/lib/ftp.c
index 5c0be38f5..0558e0563 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -379,7 +379,7 @@ static int ftp_endofresp(struct pingpong *pp,
size_t len = pp->nread_resp;
if((len > 3) && LASTLINE(line)) {
- *code = atoi(line);
+ *code = strtol(line, NULL, 10);
return 1;
}
return 0;
diff --git a/lib/ldap.c b/lib/ldap.c
index d6556c905..529e45212 100644
--- a/lib/ldap.c
+++ b/lib/ldap.c
@@ -473,7 +473,7 @@ static void _ldap_trace (const char *fmt, ...)
if(do_trace == -1) {
const char *env = getenv("CURL_TRACE");
- do_trace = (env && atoi(env) > 0);
+ do_trace = (env && strtol(env, NULL, 10) > 0);
}
if(!do_trace)
return;
diff --git a/lib/smtp.c b/lib/smtp.c
index 55e03d5a7..5ccdcb671 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -226,7 +226,7 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
return FALSE; /* Nothing for us. */
if((result = line[3] == ' '))
- *resp = atoi(line);
+ *resp = strtol(line, NULL, 10);
line += 4;
len -= 4;
diff --git a/lib/url.c b/lib/url.c
index e915c7947..0aed7b44b 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -4155,7 +4155,7 @@ static CURLcode parse_proxy(struct SessionHandle *data,
*prox_portno = 0x0; /* cut off number from host name */
prox_portno ++;
/* now set the local port number */
- conn->port = atoi(prox_portno);
+ conn->port = strtol(prox_portno, NULL, 10);
}
else {
/* without a port number after the host name, some people seem to use
diff --git a/src/main.c b/src/main.c
index 2f81ef4e8..7a6c1c8b3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1509,12 +1509,15 @@ static void cleanarg(char *str)
static int str2num(long *val, const char *str)
{
- int retcode = 0;
- if(str && ISDIGIT(*str))
- *val = atoi(str);
- else
- retcode = 1; /* badness */
- return retcode;
+ if(str && ISDIGIT(*str)) {
+ char *endptr;
+ long num = strtol(str, &endptr, 10);
+ if((endptr != str) && (endptr == str + strlen(str))) {
+ *val = num;
+ return 0; /* Ok */
+ }
+ }
+ return 1; /* badness */
}
/*
@@ -3711,7 +3714,12 @@ void progressbarinit(struct ProgressData *bar,
* we're using our own way to determine screen width */
colp = curlx_getenv("COLUMNS");
if(colp != NULL) {
- bar->width = atoi(colp);
+ char *endptr;
+ long num = strtol(colp, &endptr, 10);
+ if((endptr != colp) && (endptr == colp + strlen(colp)) && (num > 0))
+ bar->width = (int)num;
+ else
+ bar->width = 79;
curl_free(colp);
}
else
@@ -4513,7 +4521,10 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
}
env = curlx_getenv("CURL_MEMLIMIT");
if(env) {
- curl_memlimit(atoi(env));
+ char *endptr;
+ long num = strtol(env, &endptr, 10);
+ if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
+ curl_memlimit(num);
curl_free(env);
}
#endif
diff --git a/tests/libtest/first.c b/tests/libtest/first.c
index 770f9d527..a0e713f48 100644
--- a/tests/libtest/first.c
+++ b/tests/libtest/first.c
@@ -59,7 +59,10 @@ int main(int argc, char **argv)
/* this enables the fail-on-alloc-number-N functionality */
env = curl_getenv("CURL_MEMLIMIT");
if(env) {
- curl_memlimit(atoi(env));
+ char *endptr;
+ long num = strtol(env, &endptr, 10);
+ if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
+ curl_memlimit(num);
curl_free(env);
}
#endif
diff --git a/tests/libtest/lib521.c b/tests/libtest/lib521.c
index a4ae5558a..9e79cb41e 100644
--- a/tests/libtest/lib521.c
+++ b/tests/libtest/lib521.c
@@ -28,7 +28,7 @@ int test(char *URL)
}
test_setopt(curl, CURLOPT_URL, URL);
- test_setopt(curl, CURLOPT_PORT, atoi(libtest_arg2));
+ test_setopt(curl, CURLOPT_PORT, strtol(libtest_arg2, NULL, 10));
test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
test_setopt(curl, CURLOPT_VERBOSE, 1L);
diff --git a/tests/libtest/lib562.c b/tests/libtest/lib562.c
index d78ecce25..acdd79aab 100644
--- a/tests/libtest/lib562.c
+++ b/tests/libtest/lib562.c
@@ -57,7 +57,7 @@ int test(char *URL)
test_setopt(curl, CURLOPT_VERBOSE, 1L);
/* set port number */
- test_setopt(curl, CURLOPT_PORT, atoi(libtest_arg2) );
+ test_setopt(curl, CURLOPT_PORT, strtol(libtest_arg2, NULL, 10));
/* specify target */
test_setopt(curl,CURLOPT_URL, URL);
diff --git a/tests/server/rtspd.c b/tests/server/rtspd.c
index d2471b998..f751f1153 100644
--- a/tests/server/rtspd.c
+++ b/tests/server/rtspd.c
@@ -531,8 +531,8 @@ static int ProcessRequest(struct httprequest *req)
/* if the host name starts with test, the port number used in the
CONNECT line will be used as test number! */
char *portp = strchr(doc, ':');
- if(portp)
- req->testno = atoi(portp+1);
+ if(portp && (*(portp+1) != '\0') && ISDIGIT(*(portp+1)))
+ req->testno = strtol(portp+1, NULL, 10);
else
req->testno = DOCNUMBER_CONNECT;
}
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 1650226e6..65a61c2ce 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -467,8 +467,8 @@ static int ProcessRequest(struct httprequest *req)
/* if the host name starts with test, the port number used in the
CONNECT line will be used as test number! */
char *portp = strchr(doc, ':');
- if(portp)
- req->testno = atoi(portp+1);
+ if(portp && (*(portp+1) != '\0') && ISDIGIT(*(portp+1)))
+ req->testno = strtol(portp+1, NULL, 10);
else
req->testno = DOCNUMBER_CONNECT;
}