X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=cgi.c;h=5b5d16f0a06cde30225530a2039a11186c1b4240;hp=1307b87e48bfe566c59aba85c7592a25059d8251;hb=4a5e7f016a245c7c54f16ba12f7a3490daaeaf22;hpb=4f4d26f5a63e82b6429a28db1b28698ec5f6c19c diff --git a/cgi.c b/cgi.c index 1307b87e..5b5d16f0 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.164 2016/04/04 10:55:47 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 + { "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; } @@ -1395,7 +1376,7 @@ char *add_help_link(const char *item, } else { - string_append(&result, "http://"); + string_append(&result, "https://"); string_append(&result, CGI_SITE_2_HOST); string_append(&result, "/user-manual/"); }