projects
/
privoxy.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e38b2f0
)
get_number_param(): Simplify code by using strtol()
author
Fabian Keil
<fk@fabiankeil.de>
Fri, 26 Feb 2016 12:32:26 +0000
(12:32 +0000)
committer
Fabian Keil
<fk@fabiankeil.de>
Fri, 26 Feb 2016 12:32:26 +0000
(12:32 +0000)
cgi.c
patch
|
blob
|
history
diff --git
a/cgi.c
b/cgi.c
index
1307b87
..
114eae8
100644
(file)
--- a/
cgi.c
+++ b/
cgi.c
@@
-1,4
+1,4
@@
-const char cgi_rcs[] = "$Id: cgi.c,v 1.1
59 2014/10/18 11:31:25
fabiankeil Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.1
60 2014/10/18 11:31:52
fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgi.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgi.c,v $
@@
-807,8
+807,7
@@
jb_err get_number_param(struct client_state *csp,
unsigned *pvalue)
{
const char *param;
unsigned *pvalue)
{
const char *param;
- char ch;
- unsigned value;
+ char *endptr;
assert(csp);
assert(parameters);
assert(csp);
assert(parameters);
@@
-823,36
+822,12
@@
jb_err get_number_param(struct client_state *csp,
return JB_ERR_CGI_PARAMS;
}
return JB_ERR_CGI_PARAMS;
}
- /* We don't use atoi because I want to check this carefully... */
-
- value = 0;
- while ((ch = *param++) != '\0')
+ *pvalue = (unsigned int)strtol(param, &endptr, 0);
+ if (*endptr != '\0')
{
{
- if ((ch < '0') || (ch > '9'))
- {
- return JB_ERR_CGI_PARAMS;
- }
-
- ch = (char)(ch - '0');
-
- /* Note:
- *
- * <limits.h> defines UINT_MAX
- *
- * (UINT_MAX - ch) / 10 is the largest number that
- * can be safely multiplied by 10 then have ch added.
- */
- if (value > ((UINT_MAX - (unsigned)ch) / 10U))
- {
- return JB_ERR_CGI_PARAMS;
- }
-
- value = value * 10 + (unsigned)ch;
+ return JB_ERR_CGI_PARAMS;
}
}
- /* Success */
- *pvalue = value;
-
return JB_ERR_OK;
}
return JB_ERR_OK;
}