From 4a59399cd799a23149b953e9bb38c88275b29936 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 15 Feb 2014 12:32:59 +0000 Subject: Ensure allocation includes space for fragment. --- utils/nsurl.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'utils/nsurl.c') diff --git a/utils/nsurl.c b/utils/nsurl.c index f053bce6d..3a9a8c1d1 100644 --- a/utils/nsurl.c +++ b/utils/nsurl.c @@ -2032,8 +2032,9 @@ nserror nsurl_refragment(const nsurl *url, lwc_string *frag, nsurl **new_url) nserror nsurl_replace_query(const nsurl *url, const char *query, nsurl **new_url) { - int query_len; - int base_len; + int query_len; /* Length of new query string, including '?' */ + int frag_len = 0; /* Length of fragment, including '#' */ + int base_len; /* Length of URL up to start of query */ char *pos; size_t len; lwc_string *lwc_query; @@ -2051,11 +2052,12 @@ nserror nsurl_replace_query(const nsurl *url, const char *query, base_len -= lwc_string_length(url->components.query); } if (url->components.fragment != NULL) { - base_len -= 1 + lwc_string_length(url->components.fragment); + frag_len = 1 + lwc_string_length(url->components.fragment); + base_len -= frag_len; } /* Set new_url's length */ - len = base_len + query_len; + len = base_len + query_len + frag_len; /* Create NetSurf URL object */ *new_url = malloc(sizeof(nsurl) + len + 1); /* Add 1 for \0 */ -- cgit v1.2.3