-const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.36 2008/04/14 18:19:48 fabiankeil Exp $";
+const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.39 2008/04/22 16:27:42 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/urlmatch.c,v $
*
* Revisions :
* $Log: urlmatch.c,v $
+ * Revision 1.39 2008/04/22 16:27:42 fabiankeil
+ * In parse_http_request(), remove a pointless
+ * temporary variable and free the buffer earlier.
+ *
+ * Revision 1.38 2008/04/18 05:17:18 fabiankeil
+ * Mark simplematch()'s parameters as immutable.
+ *
+ * Revision 1.37 2008/04/17 14:53:29 fabiankeil
+ * Move simplematch() into urlmatch.c as it's only
+ * used to match (old-school) domain patterns.
+ *
* Revision 1.36 2008/04/14 18:19:48 fabiankeil
* Remove now-pointless cast in create_url_spec().
*
http->host = strdup(host);
- free(buf);
+ freez(buf);
if (http->host == NULL)
{
char *v[10]; /* XXX: Why 10? We should only need three. */
int n;
jb_err err;
- int is_connect = 0;
memset(http, '\0', sizeof(*http));
n = ssplit(buf, " \r\n", v, SZ(v), 1, 1);
if (n != 3)
{
- free(buf);
+ freez(buf);
return JB_ERR_PARSE;
}
if (unknown_method(v[0]))
{
log_error(LOG_LEVEL_ERROR, "Unknown HTTP method detected: %s", v[0]);
- free(buf);
+ freez(buf);
return JB_ERR_PARSE;
}
- if (strcmpic(v[0], "CONNECT") == 0)
- {
- is_connect = 1;
- }
-
err = parse_http_url(v[1], http, csp);
if (err)
{
- free(buf);
+ freez(buf);
return err;
}
/*
* Copy the details into the structure
*/
- http->ssl = is_connect;
+ http->ssl = !strcmpic(v[0], "CONNECT");
http->cmd = strdup(req);
http->gpc = strdup(v[0]);
http->ver = strdup(v[2]);
+ freez(buf);
+
if ( (http->cmd == NULL)
|| (http->gpc == NULL)
|| (http->ver == NULL) )
{
- free(buf);
return JB_ERR_MEMORY;
}
- free(buf);
return JB_ERR_OK;
}
* Returns : 0 if match, else nonzero
*
*********************************************************************/
-static int simplematch(char *pattern, char *text)
+static int simplematch(const char *pattern, const char *text)
{
- unsigned char *pat = (unsigned char *) pattern;
- unsigned char *txt = (unsigned char *) text;
- unsigned char *fallback = pat;
+ const unsigned char *pat = (const unsigned char *)pattern;
+ const unsigned char *txt = (const unsigned char *)text;
+ const unsigned char *fallback = pat;
int wildcard = 0;
unsigned char lastchar = 'a';
*/
if (port == atoi(min))
{
- free(portlist_copy);
+ freez(portlist_copy);
return(1);
}
}
*max++ = '\0';
if(port >= atoi(min) && port <= (atoi(max) ? atoi(max) : 65535))
{
- free(portlist_copy);
+ freez(portlist_copy);
return(1);
}
}
}
- free(portlist_copy);
+ freez(portlist_copy);
return 0;
}