X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=cgi.c;h=759517d6d526328dc771a9c53996bde662088d22;hb=150c89bb4f3061c2584a81af6f2e84da6b6f7d09;hp=1307b87e48bfe566c59aba85c7592a25059d8251;hpb=4f4d26f5a63e82b6429a28db1b28698ec5f6c19c;p=privoxy.git diff --git a/cgi.c b/cgi.c index 1307b87e..759517d6 100644 --- a/cgi.c +++ b/cgi.c @@ -1,4 +1,4 @@ -const char cgi_rcs[] = "$Id: cgi.c,v 1.159 2014/10/18 11:31:25 fabiankeil Exp $"; +const char cgi_rcs[] = "$Id: cgi.c,v 1.162 2016/03/17 10:40:53 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgi.c,v $ @@ -100,6 +100,12 @@ static const struct cgi_dispatcher cgi_dispatchers[] = { cgi_show_version, "View the source code version numbers", TRUE }, +#ifdef FEATURE_CLIENT_TAGS + { "show-client-tags", + cgi_show_client_tags, + "View or toggle the tags that can be set based on the clients address", + FALSE }, +#endif { "show-request", cgi_show_request, "View the request headers", @@ -807,8 +813,7 @@ jb_err get_number_param(struct client_state *csp, unsigned *pvalue) { const char *param; - char ch; - unsigned value; + char *endptr; assert(csp); assert(parameters); @@ -823,36 +828,12 @@ jb_err get_number_param(struct client_state *csp, 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: - * - * 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; }