../../lib/curlx/fopen.c \
../../lib/curlx/multibyte.c \
../../lib/curlx/strerr.c \
+ ../../lib/curlx/strparse.c \
../../lib/curlx/timediff.c \
../../lib/curlx/timeval.c \
../../lib/curlx/version_win32.c \
while((ch = cgetopt(test_argc, test_argv, "aefhm:n:xA:F:M:P:r:T:V:"))
!= -1) {
+ const char *opt = coptarg;
+ curl_off_t num;
switch(ch) {
case 'h':
usage_hx_download(NULL);
forbid_reuse_d = 1;
break;
case 'm':
- max_parallel = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ max_parallel = (size_t)num;
break;
case 'n':
- transfer_count_d = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ transfer_count_d = (size_t)num;
break;
case 'x':
fresh_connect = 1;
break;
case 'A':
- abort_offset = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ abort_offset = (size_t)num;
break;
case 'F':
- fail_offset = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ fail_offset = (size_t)num;
break;
case 'M':
- max_host_conns = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ max_host_conns = (size_t)num;
break;
case 'P':
- pause_offset = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ pause_offset = (size_t)num;
break;
case 'r':
free(resolve);
resolve = strdup(coptarg);
break;
case 'T':
- max_total_conns = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ max_total_conns = (size_t)num;
break;
case 'V': {
if(!strcmp("http/1.1", coptarg))
while((ch = cgetopt(test_argc, test_argv, "aefhlm:n:A:F:M:P:r:RS:V:"))
!= -1) {
+ const char *opt = coptarg;
+ curl_off_t num;
switch(ch) {
case 'h':
usage_hx_upload(NULL);
announce_length = 1;
break;
case 'm':
- max_parallel = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ max_parallel = (size_t)num;
break;
case 'n':
- transfer_count_u = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ transfer_count_u = (size_t)num;
break;
case 'A':
- abort_offset = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ abort_offset = (size_t)num;
break;
case 'F':
- fail_offset = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ fail_offset = (size_t)num;
break;
case 'M':
method = coptarg;
break;
case 'P':
- pause_offset = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ pause_offset = (size_t)num;
break;
case 'r':
resolve = coptarg;
reuse_easy = 1;
break;
case 'S':
- send_total = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ send_total = (size_t)num;
break;
case 'V': {
if(!strcmp("http/1.1", coptarg))
(void)URL;
while((ch = cgetopt(test_argc, test_argv, "12c:hm:M:")) != -1) {
+ const char *opt = coptarg;
+ curl_off_t num;
switch(ch) {
case '1':
model = 1;
test_ws_data_usage(NULL);
return CURLE_BAD_FUNCTION_ARGUMENT;
case 'c':
- count = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ count = (size_t)num;
break;
case 'm':
- plen_min = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ plen_min = (size_t)num;
break;
case 'M':
- plen_max = (size_t)atol(coptarg);
+ if(!curlx_str_number(&opt, &num, LONG_MAX))
+ plen_max = (size_t)num;
break;
default:
test_ws_data_usage("invalid option");
#ifdef CURLDEBUG
static void memory_tracking_init(void)
{
- char *env;
+ const char *env;
/* if CURL_MEMDEBUG is set, this starts memory tracking message logging */
env = getenv("CURL_MEMDEBUG");
if(env) {
/* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
env = getenv("CURL_MEMLIMIT");
if(env) {
- long num = atol(env);
- if(num > 0)
- curl_dbg_memlimit(num);
+ curl_off_t num;
+ if(!curlx_str_number(&env, &num, LONG_MAX) && num > 0)
+ curl_dbg_memlimit((long)num);
}
}
#else
CURLcode result;
entry_func_t entry_func;
const char *entry_name;
- char *env;
+ const char *env;
size_t tmp;
CURLX_SET_BINMODE(stdout);
if(argc > 5)
libtest_arg4 = argv[5];
+ testnum = 0;
env = getenv("CURL_TESTNUM");
- if(env)
- testnum = atoi(env);
- else
- testnum = 0;
+ if(env) {
+ curl_off_t num;
+ if(!curlx_str_number(&env, &num, INT_MAX) && num > 0)
+ testnum = (int)num;
+ }
result = entry_func(URL);
curl_mfprintf(stderr, "Test ended with result %d\n", result);
static CURLcode test_lib1568(const char *URL)
{
- CURLcode ret;
+ CURLcode ret = TEST_ERR_MAJOR_BAD;
CURL *curl;
- curl_global_init(CURL_GLOBAL_ALL);
+ curl_off_t port;
+
+ if(curlx_str_number(&libtest_arg2, &port, 0xffff))
+ return ret;
+
+ if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK)
+ return ret;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, URL);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "lib1568");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 50L);
- curl_easy_setopt(curl, CURLOPT_PORT, atol(libtest_arg2));
+ curl_easy_setopt(curl, CURLOPT_PORT, (long)port);
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
- curl = NULL;
curl_global_cleanup();
return ret;
int status;
curl_socket_t client_fd = CURL_SOCKET_BAD;
struct sockaddr_in serv_addr;
- unsigned short port;
+ curl_off_t port;
if(!strcmp("check", URL))
return CURLE_OK; /* no output makes it not skipped */
- port = (unsigned short)atoi(libtest_arg3);
+ if(curlx_str_number(&libtest_arg3, &port, 0xffff))
+ return res;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
curl_mfprintf(stderr, "curl_global_init() failed\n");
- return TEST_ERR_MAJOR_BAD;
+ return res;
}
/*
}
serv_addr.sin_family = AF_INET;
- serv_addr.sin_port = htons(port);
+ serv_addr.sin_port = htons((unsigned short)port);
if(my_inet_pton(AF_INET, libtest_arg2, &serv_addr.sin_addr) <= 0) {
curl_mfprintf(stderr, "inet_pton failed\n");
static CURLcode test_lib521(const char *URL)
{
- CURLcode res;
+ CURLcode res = TEST_ERR_MAJOR_BAD;
CURL *curl;
+ curl_off_t port;
+
+ if(curlx_str_number(&libtest_arg2, &port, 0xffff))
+ return res;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
curl_mfprintf(stderr, "curl_global_init() failed\n");
- return TEST_ERR_MAJOR_BAD;
+ return res;
}
curl = curl_easy_init();
if(!curl) {
curl_mfprintf(stderr, "curl_easy_init() failed\n");
curl_global_cleanup();
- return TEST_ERR_MAJOR_BAD;
+ return res;
}
test_setopt(curl, CURLOPT_URL, URL);
- test_setopt(curl, CURLOPT_PORT, atol(libtest_arg2));
+ test_setopt(curl, CURLOPT_PORT, (long)port);
test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
test_setopt(curl, CURLOPT_VERBOSE, 1L);
static CURLcode test_lib562(const char *URL)
{
+ CURLcode res = TEST_ERR_MAJOR_BAD;
CURL *curl;
- CURLcode res = CURLE_OK;
+ curl_off_t port;
+
+ if(curlx_str_number(&libtest_arg2, &port, 0xffff))
+ return res;
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
curl_mfprintf(stderr, "curl_global_init() failed\n");
- return TEST_ERR_MAJOR_BAD;
+ return res;
}
/* get a curl handle */
if(!curl) {
curl_mfprintf(stderr, "curl_easy_init() failed\n");
curl_global_cleanup();
- return TEST_ERR_MAJOR_BAD;
+ return res;
}
/* enable verbose */
test_setopt(curl, CURLOPT_VERBOSE, 1L);
/* set port number */
- test_setopt(curl, CURLOPT_PORT, atol(libtest_arg2));
+ test_setopt(curl, CURLOPT_PORT, (long)port);
/* specify target */
test_setopt(curl, CURLOPT_URL, URL);
int msgs_left;
CURLMsg *msg;
FILE *upload = NULL;
+ curl_off_t accept_timeout;
+
+ if(curlx_str_number(&libtest_arg2, &accept_timeout, 65535))
+ return TEST_ERR_MAJOR_BAD;
start_test_timing();
easy_setopt(curl, CURLOPT_FTPPORT, "-");
/* server connection timeout */
- easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, atol(libtest_arg2)*1000);
+ easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, (long)(accept_timeout * 1000));
multi_init(multi);