]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
uri-util: Made URI encoding functions accept NULL pointer for additional escaped...
authorStephan Bosch <stephan@rename-it.nl>
Sun, 8 May 2016 21:44:42 +0000 (23:44 +0200)
committerGitLab <gitlab@git.dovecot.net>
Mon, 16 May 2016 07:36:48 +0000 (10:36 +0300)
src/lib/uri-util.c
src/lib/uri-util.h

index b2eec8dac3d47ce9511457cda0fc507e43efe3a3..bfdc07fc1474879c8c3b5d546037e11748c79d3e 100644 (file)
@@ -1043,7 +1043,7 @@ void uri_data_encode(string_t *out,
        pbegin = p = (const unsigned char *)data;
        while (*p != '\0') {
                if ((*p & 0x80) != 0 || (esc_table[*p] & esc_mask) == 0 ||
-                       strchr(esc_extra, (char)*p) != NULL) {
+                       (esc_extra != NULL && strchr(esc_extra, (char)*p) != NULL)) {
                        if ((p - pbegin) > 0)
                                str_append_n(out, pbegin, p - pbegin);
                        str_printfa(out, "%%%02x", *p);
@@ -1071,14 +1071,14 @@ void uri_append_user_data(string_t *out, const char *esc,
 
 void uri_append_userinfo(string_t *out, const char *userinfo)
 {
-       uri_append_user_data(out, "", userinfo);
+       uri_append_user_data(out, NULL, userinfo);
        str_append_c(out, '@');
 }
 
 void uri_append_host_name(string_t *out, const char *name)
 {
        uri_data_encode(out, _uri_char_lookup,
-                       CHAR_MASK_UNRESERVED | CHAR_MASK_SUB_DELIMS, "", name);
+                       CHAR_MASK_UNRESERVED | CHAR_MASK_SUB_DELIMS, NULL, name);
 }
 
 void uri_append_host_ip(string_t *out, const struct ip_addr *host_ip)
@@ -1126,7 +1126,7 @@ void uri_append_path_segment(string_t *out, const char *segment)
 {
        str_append_c(out, '/');
        if (*segment != '\0')
-               uri_append_path_data(out, "", segment);
+               uri_append_path_data(out, NULL, segment);
 }
 
 void uri_append_path_data(string_t *out, const char *esc,
@@ -1139,7 +1139,7 @@ void uri_append_path(string_t *out, const char *path)
 {
        str_append_c(out, '/');
        if (*path != '\0')
-               uri_append_path_data(out, "", path);
+               uri_append_path_data(out, NULL, path);
 }
 
 void uri_append_query_data(string_t *out, const char *esc,
@@ -1152,7 +1152,7 @@ void uri_append_query(string_t *out, const char *query)
 {
        str_append_c(out, '?');
        if (*query != '\0')
-               uri_append_query_data(out, "", query);
+               uri_append_query_data(out, NULL, query);
 }
 
 void uri_append_fragment_data(string_t *out, const char *esc,
@@ -1165,5 +1165,5 @@ void uri_append_fragment(string_t *out, const char *fragment)
 {
        str_append_c(out, '#');
        if (*fragment != '\0')
-               uri_append_fragment_data(out, "", fragment);
+               uri_append_fragment_data(out, NULL, fragment);
 }
index 58e7b919eb73c06f7750b76fcb4dc8b4fe481624..74bb5a526dc762d09f89176274c5777a513553f1 100644 (file)
@@ -84,11 +84,12 @@ void uri_host_copy(pool_t pool, struct uri_host *dest,
 void uri_data_encode(string_t *out,
        const unsigned char esc_table[256],
        unsigned char esc_mask, const char *esc_extra,
-       const char *data);
+       const char *data) ATTR_NULL(4);
 
 void uri_append_scheme(string_t *out, const char *scheme);
 
-void uri_append_user_data(string_t *out, const char *esc, const char *data);
+void uri_append_user_data(string_t *out,
+       const char *esc, const char *data) ATTR_NULL(2);
 void uri_append_userinfo(string_t *out, const char *userinfo);
 
 void uri_append_host_name(string_t *out, const char *name);
@@ -96,15 +97,19 @@ void uri_append_host_ip(string_t *out, const struct ip_addr *host_ip);
 void uri_append_host(string_t *out, const struct uri_host *host);
 void uri_append_port(string_t *out, in_port_t port);
 
-void uri_append_path_segment_data(string_t *out, const char *esc, const char *data);
+void uri_append_path_segment_data(string_t *out,
+       const char *esc, const char *data) ATTR_NULL(2);
 void uri_append_path_segment(string_t *out, const char *segment);
-void uri_append_path_data(string_t *out, const char *esc, const char *data);
+void uri_append_path_data(string_t *out,
+       const char *esc, const char *data) ATTR_NULL(2);
 void uri_append_path(string_t *out, const char *path);
 
-void uri_append_query_data(string_t *out, const char *esc, const char *data);
+void uri_append_query_data(string_t *out,
+       const char *esc, const char *data) ATTR_NULL(2);
 void uri_append_query(string_t *out, const char *query);
 
-void uri_append_fragment_data(string_t *out, const char *esc, const char *data);
+void uri_append_fragment_data(string_t *out,
+       const char *esc, const char *data) ATTR_NULL(2);
 void uri_append_fragment(string_t *out, const char *fragment);
 
 #endif