diff --git a/src/lib/uri-util.c b/src/lib/uri-util.c index eb1cdcb39b..4288a96fd4 100644 --- a/src/lib/uri-util.c +++ b/src/lib/uri-util.c @@ -927,13 +927,22 @@ int uri_parse_fragment(struct uri_parser *parser, const char **fragment_r) return 1; } -void uri_parser_init(struct uri_parser *parser, pool_t pool, const char *data) +void uri_parser_init_data(struct uri_parser *parser, + pool_t pool, const unsigned char *data, size_t size) { parser->pool = pool; - parser->begin = parser->cur = (unsigned char *)data; - parser->end = (unsigned char *)data + strlen(data); + parser->begin = parser->cur = data; + parser->end = data + size; parser->error = NULL; parser->tmpbuf = NULL; + +} + +void uri_parser_init(struct uri_parser *parser, + pool_t pool, const char *uri) +{ + uri_parser_init_data + (parser, pool, (const unsigned char *)uri, strlen(uri)); } string_t *uri_parser_get_tmpbuf(struct uri_parser *parser, size_t size) diff --git a/src/lib/uri-util.h b/src/lib/uri-util.h index c69fc07d75..348f9d4e19 100644 --- a/src/lib/uri-util.h +++ b/src/lib/uri-util.h @@ -53,8 +53,11 @@ int uri_parse_query(struct uri_parser *parser, int uri_parse_fragment(struct uri_parser *parser, const char **fragment_r) ATTR_NULL(2); -void uri_parser_init(struct uri_parser *parser, pool_t pool, - const char *data); +void uri_parser_init_data(struct uri_parser *parser, + pool_t pool, const unsigned char *data, size_t size); +void uri_parser_init(struct uri_parser *parser, + pool_t pool, const char *uri); + string_t *uri_parser_get_tmpbuf(struct uri_parser *parser, size_t size);