From 9be0727edbc5de0cfdbe1c9f7c244e1530f82fee Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Thu, 29 Nov 2012 09:57:39 +0000 Subject: [PATCH] Use strdup_or_die() instead of strdup() The strings are known to be short. --- urlmatch.c | 106 +++++++++++------------------------------------------ 1 file changed, 21 insertions(+), 85 deletions(-) diff --git a/urlmatch.c b/urlmatch.c index 2a1ae8b6..b5001af5 100644 --- a/urlmatch.c +++ b/urlmatch.c @@ -1,4 +1,4 @@ -const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.71 2012/06/08 15:15:11 fabiankeil Exp $"; +const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.72 2012/07/23 12:42:53 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/urlmatch.c,v $ @@ -115,7 +115,6 @@ void free_http_request(struct http_request *http) * 1 : http = pointer to the http structure to hold elements. * * Returns : JB_ERR_OK on success - * JB_ERR_MEMORY on out of memory * JB_ERR_PARSE on malformed command/URL * or >100 domains deep. * @@ -126,11 +125,7 @@ jb_err init_domain_components(struct http_request *http) size_t size; char *p; - http->dbuffer = strdup(http->host); - if (NULL == http->dbuffer) - { - return JB_ERR_MEMORY; - } + http->dbuffer = strdup_or_die(http->host); /* map to lower case */ for (p = http->dbuffer; *p ; p++) @@ -225,7 +220,6 @@ int url_requires_percent_encoding(const char *url) * protocol are acceptable. * * Returns : JB_ERR_OK on success - * JB_ERR_MEMORY on out of memory * JB_ERR_PARSE on malformed command/URL * or >100 domains deep. * @@ -237,23 +231,15 @@ jb_err parse_http_url(const char *url, struct http_request *http, int require_pr /* * Save our initial URL */ - http->url = strdup(url); - if (http->url == NULL) - { - return JB_ERR_MEMORY; - } - + http->url = strdup_or_die(url); /* * Check for * URI. If found, we're done. */ if (*http->url == '*') { - if (NULL == (http->path = strdup("*")) - || NULL == (http->hostport = strdup(""))) - { - return JB_ERR_MEMORY; - } + http->path = strdup_or_die("*"); + http->hostport = strdup_or_die(""); if (http->url[1] != '\0') { return JB_ERR_PARSE; @@ -270,11 +256,7 @@ jb_err parse_http_url(const char *url, struct http_request *http, int require_pr char *url_noproto; char *url_path; - buf = strdup(url); - if (buf == NULL) - { - return JB_ERR_MEMORY; - } + buf = strdup_or_die(url); /* Find the start of the URL in our scratch space */ url_noproto = buf; @@ -317,9 +299,9 @@ jb_err parse_http_url(const char *url, struct http_request *http, int require_pr * https URL in and it's parsed by the function. (When the * URL is actually retrieved, SSL hides the path part). */ - http->path = strdup(http->ssl ? "/" : url_path); + http->path = strdup_or_die(http->ssl ? "/" : url_path); *url_path = '\0'; - http->hostport = strdup(url_noproto); + http->hostport = strdup_or_die(url_noproto); } else { @@ -327,17 +309,11 @@ jb_err parse_http_url(const char *url, struct http_request *http, int require_pr * Repair broken HTTP requests that don't contain a path, * or CONNECT requests */ - http->path = strdup("/"); - http->hostport = strdup(url_noproto); + http->path = strdup_or_die("/"); + http->hostport = strdup_or_die(url_noproto); } freez(buf); - - if ((http->path == NULL) - || (http->hostport == NULL)) - { - return JB_ERR_MEMORY; - } } if (!host_available) @@ -354,11 +330,7 @@ jb_err parse_http_url(const char *url, struct http_request *http, int require_pr char *host; char *port; - buf = strdup(http->hostport); - if (buf == NULL) - { - return JB_ERR_MEMORY; - } + buf = strdup_or_die(http->hostport); /* check if url contains username and/or password */ host = strchr(buf, '@'); @@ -420,14 +392,9 @@ jb_err parse_http_url(const char *url, struct http_request *http, int require_pr http->port = (http->ssl ? 443 : 80); } - http->host = strdup(host); + http->host = strdup_or_die(host); freez(buf); - - if (http->host == NULL) - { - return JB_ERR_MEMORY; - } } #ifdef FEATURE_EXTENDED_HOST_PATTERNS @@ -506,7 +473,6 @@ static int unknown_method(const char *method) * 2 : http = pointer to the http structure to hold elements * * Returns : JB_ERR_OK on success - * JB_ERR_MEMORY on out of memory * JB_ERR_CGI_PARAMS on malformed command/URL * or >100 domains deep. * @@ -520,11 +486,7 @@ jb_err parse_http_request(const char *req, struct http_request *http) memset(http, '\0', sizeof(*http)); - buf = strdup(req); - if (buf == NULL) - { - return JB_ERR_MEMORY; - } + buf = strdup_or_die(req); n = ssplit(buf, " \r\n", v, SZ(v)); if (n != 3) @@ -569,19 +531,12 @@ jb_err parse_http_request(const char *req, struct http_request *http) /* * Copy the details into the structure */ - http->cmd = strdup(req); - http->gpc = strdup(v[0]); - http->ver = strdup(v[2]); + http->cmd = strdup_or_die(req); + http->gpc = strdup_or_die(v[0]); + http->ver = strdup_or_die(v[2]); freez(buf); - if ( (http->cmd == NULL) - || (http->gpc == NULL) - || (http->ver == NULL)) - { - return JB_ERR_MEMORY; - } - return JB_ERR_OK; } @@ -745,11 +700,7 @@ static jb_err compile_url_pattern(struct url_spec *url, char *buf) if (NULL != p) { *p++ = '\0'; - url->port_list = strdup(p); - if (NULL == url->port_list) - { - return JB_ERR_MEMORY; - } + url->port_list = strdup_or_die(p); } else { @@ -800,7 +751,6 @@ static jb_err compile_host_pattern(struct url_spec *url, const char *host_patter * 2 : host_pattern = Host pattern to parse. * * Returns : JB_ERR_OK - Success - * JB_ERR_MEMORY - Out of memory * JB_ERR_PARSE - Cannot parse regex * *********************************************************************/ @@ -825,12 +775,7 @@ static jb_err compile_host_pattern(struct url_spec *url, const char *host_patter /* * Split domain into components */ - url->dbuffer = strdup(host_pattern); - if (NULL == url->dbuffer) - { - free_url_spec(url); - return JB_ERR_MEMORY; - } + url->dbuffer = strdup_or_die(host_pattern); /* * Map to lower case @@ -1146,7 +1091,6 @@ static int domain_match(const struct url_spec *pattern, const struct http_reques * are lost forever. * * Returns : JB_ERR_OK - Success - * JB_ERR_MEMORY - Out of memory * JB_ERR_PARSE - Cannot parse regex (Detailed message * written to system log) * @@ -1159,11 +1103,7 @@ jb_err create_url_spec(struct url_spec *url, char *buf) memset(url, '\0', sizeof(*url)); /* Remember the original specification for the CGI pages. */ - url->spec = strdup(buf); - if (NULL == url->spec) - { - return JB_ERR_MEMORY; - } + url->spec = strdup_or_die(buf); /* Is it a tag pattern? */ if (0 == strncmpic(url->spec, "TAG:", 4)) @@ -1332,7 +1272,7 @@ int match_portlist(const char *portlist, int port) { char *min, *max, *next, *portlist_copy; - min = portlist_copy = strdup(portlist); + min = portlist_copy = strdup_or_die(portlist); /* * Zero-terminate first item and remember offset for next @@ -1420,11 +1360,7 @@ jb_err parse_forwarder_address(char *address, char **hostname, int *port) return JB_ERR_PARSE; } - *hostname = strdup(address); - if (NULL == *hostname) - { - return JB_ERR_MEMORY; - } + *hostname = strdup_or_die(address); if ((**hostname == '[') && (NULL != (p = strchr(*hostname, ']')))) { -- 2.39.2