]> granicus.if.org Git - libevent/commitdiff
Make evhttp_uri_parse and friends conform to memory management standards
authorNick Mathewson <nickm@torproject.org>
Mon, 18 Oct 2010 18:34:20 +0000 (14:34 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 18 Oct 2010 18:34:20 +0000 (14:34 -0400)
http.c

diff --git a/http.c b/http.c
index 37936566cfb567b1f0d2fc6fe5efd5f1b1e47dbd..7677e493e1d83c53a259ffbcb74a110705cdb70d 100644 (file)
--- a/http.c
+++ b/http.c
@@ -3334,20 +3334,21 @@ bind_socket(const char *address, ev_uint16_t port, int reuse)
        return (fd);
 }
 
-struct evhttp_uri *evhttp_uri_parse(const char *source_uri)
+struct evhttp_uri *
+evhttp_uri_parse(const char *source_uri)
 {
        char *readbuf = 0, *readp = 0, *token = 0, *query = 0, *host = 0, *port = 0;
 
-       struct evhttp_uri *uri = calloc(1, sizeof(*uri));
+       struct evhttp_uri *uri = mm_calloc(1, sizeof(struct evhttp_uri));
        if (uri == NULL) {
                event_err(1, "%s: calloc", __func__);
                return NULL;
        }
 
-       readbuf = strdup(source_uri);
+       readbuf = mm_strdup(source_uri);
        if (readbuf == NULL) {
                event_err(1, "%s: strdup", __func__);
-               free(uri);
+               mm_free(uri);
                return NULL;
        }
 
@@ -3358,13 +3359,13 @@ struct evhttp_uri *evhttp_uri_parse(const char *source_uri)
        token = strstr(readp, "://");
        if (!token) {
                /* unsupported uri */
-               free(readbuf);
-               free(uri);
+               mm_free(readbuf);
+               mm_free(uri);
                return NULL;
        }
 
        *token = '\0';
-       uri->scheme = strdup(readp);
+       uri->scheme = mm_strdup(readp);
 
        readp = token;
        readp += 3; /* eat :// */
@@ -3375,10 +3376,10 @@ struct evhttp_uri *evhttp_uri_parse(const char *source_uri)
                char *fragment = strchr(query, '#');
                if (fragment) {
                        *fragment++ = '\0'; /* eat '#' */
-                       uri->fragment = strdup(fragment);
+                       uri->fragment = mm_strdup(fragment);
                }
 
-               uri->query = strdup(query);
+               uri->query = mm_strdup(query);
                *query = '\0'; /* eat '/' */
        }
 
@@ -3391,10 +3392,10 @@ struct evhttp_uri *evhttp_uri_parse(const char *source_uri)
                pass = strchr(readp, ':');
                if (pass) {
                        *pass++ = '\0'; /* eat ':' */
-                       uri->pass = strdup(pass);
+                       uri->pass = mm_strdup(pass);
                }
 
-               uri->user = strdup(readp);
+               uri->user = mm_strdup(readp);
                readp = host;
        }
 
@@ -3406,9 +3407,9 @@ struct evhttp_uri *evhttp_uri_parse(const char *source_uri)
        }
 
        /* 5. host */
-       uri->host = strdup(readp);
+       uri->host = mm_strdup(readp);
 
-       free(readbuf);
+       mm_free(readbuf);
 
        return uri;
 }
@@ -3420,7 +3421,7 @@ void evhttp_uri_free(struct evhttp_uri *uri)
 
 #define _URI_FREE_STR(f)               \
        if (uri->f) {                   \
-               free(uri->f);           \
+               mm_free(uri->f);                \
        }
 
        _URI_FREE_STR(scheme);
@@ -3430,12 +3431,13 @@ void evhttp_uri_free(struct evhttp_uri *uri)
        _URI_FREE_STR(query);
        _URI_FREE_STR(fragment);
 
-       free(uri);
+       mm_free(uri);
 
 #undef _URI_FREE_STR
 }
 
-char *evhttp_uri_join(struct evhttp_uri *uri, void *buf, size_t limit)
+char *
+evhttp_uri_join(struct evhttp_uri *uri, void *buf, size_t limit)
 {
        struct evbuffer *tmp = 0;
        unsigned char *joined = 0;