* Instead we have an idiotic define in httpd.h that prevents
* it from being used even when it is available. Sheesh.
*/
- conf->limit_req_body = (unsigned long)strtol(arg, (char **)NULL, 10);
+ conf->limit_req_body = (unsigned long)ap_strtol(arg, (char **)NULL, 10);
return NULL;
}
}
if (ap_isdigit(*r->range))
- *start = strtol(r->range, (char **)&r->range, 10);
+ *start = ap_strtol(r->range, (char **)&r->range, 10);
else
*start = -1;
++r->range;
if (ap_isdigit(*r->range))
- *end = strtol(r->range, (char **)&r->range, 10);
+ *end = ap_strtol(r->range, (char **)&r->range, 10);
else
*end = -1;
}
else if (lenp) {
const char *pos = lenp;
+ int conversion_error = 0;
while (ap_isdigit(*pos) || ap_isspace(*pos))
++pos;
- if (*pos != '\0') {
- ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
- "Invalid Content-Length %s", lenp);
- return HTTP_BAD_REQUEST;
+
+ if (*pos == '\0') {
+ char *endstr;
+ errno = 0;
+ r->remaining = ap_strtol(lenp, &endstr, 10);
+ if (errno || (endstr && *endstr)) {
+ conversion_error = 1;
+ }
}
- r->remaining = atol(lenp);
- if (r->remaining < 0) {
+ if (*pos != '\0' || conversion_error) {
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
- "Request content-length of %s maps to negative number %ld",
- lenp, r->remaining);
+ "Invalid Content-Length");
return HTTP_BAD_REQUEST;
}
}
xstr[2]=what[0];
xstr[3]=what[1];
xstr[4]='\0';
- digit = os_toebcdic[0xFF & strtol(xstr, NULL, 16)];
+ digit = os_toebcdic[0xFF & ap_strtol(xstr, NULL, 16)];
#endif /*CHARSET_EBCDIC*/
return (digit);
}
++s;
uptr->port_str = ap_pstrndup(p, s, uri - s);
if (uri != s) {
- port = strtol(uptr->port_str, &endstr, 10);
+ port = ap_strtol(uptr->port_str, &endstr, 10);
uptr->port = port;
if (*endstr == '\0') {
goto deal_with_path;
++s;
uptr->port_str = ap_pstrdup(p, s);
if (*s != '\0') {
- uptr->port = (unsigned short)strtol(uptr->port_str, &endstr, 10);
+ uptr->port = (unsigned short)ap_strtol(uptr->port_str, &endstr, 10);
if (*endstr == '\0') {
return HTTP_OK;
}
char *endptr;
long lifetime;
- lifetime = strtol(t, &endptr, 10);
+ lifetime = ap_strtol(t, &endptr, 10);
if (endptr < (t+strlen(t)) && !ap_isspace(*endptr))
return ap_pstrcat(cmd->pool, "Invalid time in AuthDigestNonceLifetime: ", t, NULL);
}
if (resp->opaque)
- resp->opaque_num = (unsigned long) strtol(resp->opaque, NULL, 16);
+ resp->opaque_num = (unsigned long) ap_strtol(resp->opaque, NULL, 16);
resp->auth_hdr_sts = VALID;
return OK;
if (!conf->check_nc || !client_mm)
return OK;
- nc = strtol(snc, &endptr, 16);
+ nc = ap_strtol(snc, &endptr, 16);
if (endptr < (snc+strlen(snc)) && !ap_isspace(*endptr)) {
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
"Digest: invalid nc %s received - not a number", snc);
if (r->method_number == M_TRACE &&
(maxfwd_str = ap_table_get(r->headers_in, "Max-Forwards")) != NULL) {
- long maxfwd = strtol(maxfwd_str, NULL, 10);
+ long maxfwd = ap_strtol(maxfwd_str, NULL, 10);
if (maxfwd < 1) {
int access_status;
r->proxyreq = NOT_PROXY;
content_length = ap_table_get(resp_hdrs, "Content-Length");
if (content_length != NULL) {
- c->len = strtol(content_length, NULL, 10);
+ c->len = ap_strtol(content_length, NULL, 10);
}
/* Now add out bound headers set by other modules */
if (!ap_isdigit(*addr))
return 0; /* no digit at start of quad */
- ip_addr[quads] = strtol(addr, &tmp, 0);
+ ip_addr[quads] = ap_strtol(addr, &tmp, 0);
if (tmp == addr) /* expected a digit, found something else */
return 0;
++addr;
- bits = strtol(addr, &tmp, 0);
+ bits = ap_strtol(addr, &tmp, 0);
if (tmp == addr) /* expected a digit, found something else */
return 0;
}
/* get offset, then skip over it */
- m->offset = (int) strtol(l, &t, 0);
+ m->offset = (int) ap_strtol(l, &t, 0);
if (l == t) {
ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, serv,
MODNAME ": offset %s invalid", l);
if (*l == '+' || *l == '-')
l++;
if (ap_isdigit((unsigned char) *l)) {
- m->in.offset = strtol(l, &t, 0);
+ m->in.offset = ap_strtol(l, &t, 0);
if (*s == '-')
m->in.offset = -m->in.offset;
}
/* New-style anding: "0 byte&0x80 =0x80 dynamically linked" */
if (*l == '&') {
++l;
- m->mask = signextend(serv, m, strtol(l, &l, 0));
+ m->mask = signextend(serv, m, ap_strtol(l, &l, 0));
}
else
m->mask = ~0L;
m->vallen = slen;
}
else if (m->reln != 'x')
- m->value.l = signextend(s, m, strtol(*p, p, 0));
+ m->value.l = signextend(s, m, ap_strtol(*p, p, 0));
return 0;
}
ap_kill_timeout(r);
return 0;
}
- seed = strtol(args, &endptr, 0);
+ seed = ap_strtol(args, &endptr, 0);
if (!endptr || *endptr != ',') {
goto error;
}
++endptr;
- count = strtol(endptr, &endptr, 0);
+ count = ap_strtol(endptr, &endptr, 0);
srandom(seed);
for (i = 0; i < count; ++i) {
return err;
}
- if (((val = strtol(arg, (char **) &err, 10)) <= 0) || *err)
+ if (((val = ap_strtol(arg, (char **) &err, 10)) <= 0) || *err)
return "ISAPIReadAheadBuffer must be a legitimate value.";
ReadAheadBuffer = val;