aboutsummaryrefslogtreecommitdiff
path: root/src/util/url.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/url.c')
-rw-r--r--src/util/url.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/util/url.c b/src/util/url.c
index 934bb058a..f2298c0f1 100644
--- a/src/util/url.c
+++ b/src/util/url.c
@@ -84,8 +84,12 @@ static void
84buffer_write_urlencode (struct GNUNET_Buffer *buf, 84buffer_write_urlencode (struct GNUNET_Buffer *buf,
85 const char *s) 85 const char *s)
86{ 86{
87 size_t ulen;
88
89 ulen = urlencode_len (s);
90 GNUNET_assert (ulen < ulen + 1);
87 GNUNET_buffer_ensure_remaining (buf, 91 GNUNET_buffer_ensure_remaining (buf,
88 urlencode_len (s) + 1); 92 ulen + 1);
89 for (size_t i = 0; i < strlen (s); i++) 93 for (size_t i = 0; i < strlen (s); i++)
90 { 94 {
91 if (GNUNET_YES == is_reserved (s[i])) 95 if (GNUNET_YES == is_reserved (s[i]))
@@ -139,6 +143,8 @@ calculate_argument_length (va_list args)
139 { 143 {
140 char *key; 144 char *key;
141 char *value; 145 char *value;
146 size_t vlen;
147 size_t klen;
142 148
143 key = va_arg (ap, 149 key = va_arg (ap,
144 char *); 150 char *);
@@ -148,10 +154,12 @@ calculate_argument_length (va_list args)
148 char *); 154 char *);
149 if (NULL == value) 155 if (NULL == value)
150 continue; 156 continue;
151 GNUNET_assert ( (len <= len + urlencode_len (value)) && 157 vlen = urlencode_len (value);
152 (len <= len + urlencode_len (value) + strlen (key)) && 158 klen = strlen (key);
153 (len < len + urlencode_len (value) + strlen (key) + 2) ); 159 GNUNET_assert ( (len <= len + vlen) &&
154 len += urlencode_len (value) + strlen (key) + 2; 160 (len <= len + vlen + klen) &&
161 (len < len + vlen + klen + 2) );
162 len += vlen + klen + 2;
155 } 163 }
156 va_end (ap); 164 va_end (ap);
157 return len; 165 return len;