提交 4eb1c256 编写于 作者: G Guido Günther 提交者: Daniel Veillard

virURIParse: don't forget to copy the user part

This got dropped with 300e60e1

Cheers,
 -- Guido
上级 bde32b1a
...@@ -185,7 +185,9 @@ virURIParse(const char *uri) ...@@ -185,7 +185,9 @@ virURIParse(const char *uri)
if (xmluri->fragment && if (xmluri->fragment &&
!(ret->fragment = strdup(xmluri->fragment))) !(ret->fragment = strdup(xmluri->fragment)))
goto no_memory; goto no_memory;
if (xmluri->user &&
!(ret->user = strdup(xmluri->user)))
goto no_memory;
/* First check: does it even make sense to jump inside */ /* First check: does it even make sense to jump inside */
if (ret->server != NULL && if (ret->server != NULL &&
...@@ -249,6 +251,7 @@ virURIFormat(virURIPtr uri) ...@@ -249,6 +251,7 @@ virURIFormat(virURIPtr uri)
xmluri.query = uri->query; xmluri.query = uri->query;
#endif #endif
xmluri.fragment = uri->fragment; xmluri.fragment = uri->fragment;
xmluri.user = uri->user;
/* First check: does it make sense to do anything */ /* First check: does it make sense to do anything */
if (xmluri.server != NULL && if (xmluri.server != NULL &&
......
...@@ -42,6 +42,7 @@ struct URIParseData { ...@@ -42,6 +42,7 @@ struct URIParseData {
const char *path; const char *path;
const char *query; const char *query;
const char *fragment; const char *fragment;
const char *user;
virURIParamPtr params; virURIParamPtr params;
}; };
...@@ -143,33 +144,34 @@ mymain(void) ...@@ -143,33 +144,34 @@ mymain(void)
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
#define TEST_FULL(uri, uri_out, scheme, server, port, path, query, \ #define TEST_FULL(uri, uri_out, scheme, server, port, path, query, \
fragment, params) \ fragment, user, params) \
do { \ do { \
const struct URIParseData data = { \ const struct URIParseData data = { \
uri, (uri_out) ? (uri_out) : (uri), scheme, server, port, \ uri, (uri_out) ? (uri_out) : (uri), scheme, server, port, \
path, query, fragment, params \ path, query, fragment, user, params \
}; \ }; \
if (virtTestRun("Test URI " # uri, 1, testURIParse, &data) < 0) \ if (virtTestRun("Test URI " # uri, 1, testURIParse, &data) < 0) \
ret = -1; \ ret = -1; \
} while (0) } while (0)
#define TEST_PARSE(uri, scheme, server, port, path, query, fragment, params) \ #define TEST_PARSE(uri, scheme, server, port, path, query, fragment, user, params) \
TEST_FULL(uri, NULL, scheme, server, port, path, query, fragment, params) TEST_FULL(uri, NULL, scheme, server, port, path, query, fragment, user, params)
#define TEST_PARAMS(query_in, query_out, params) \ #define TEST_PARAMS(query_in, query_out, params) \
TEST_FULL("test://example.com/?" query_in, \ TEST_FULL("test://example.com/?" query_in, \
*query_out ? "test://example.com/?" query_out : NULL, \ *query_out ? "test://example.com/?" query_out : NULL, \
"test", "example.com", 0, "/", query_in, NULL, params) "test", "example.com", 0, "/", query_in, NULL, NULL, params)
virURIParam params[] = { virURIParam params[] = {
{ (char*)"name", (char*)"value" }, { (char*)"name", (char*)"value" },
{ NULL, NULL }, { NULL, NULL },
}; };
TEST_PARSE("test://example.com", "test", "example.com", 0, NULL, NULL, NULL, NULL); TEST_PARSE("test://example.com", "test", "example.com", 0, NULL, NULL, NULL, NULL, NULL);
TEST_PARSE("test://example.com:123", "test", "example.com", 123, NULL, NULL, NULL, NULL); TEST_PARSE("test://foo@example.com", "test", "example.com", 0, NULL, NULL, NULL, "foo", NULL);
TEST_PARSE("test://example.com:123/system?name=value#foo", "test", "example.com", 123, "/system", "name=value", "foo", params); TEST_PARSE("test://example.com:123", "test", "example.com", 123, NULL, NULL, NULL, NULL, NULL);
TEST_PARSE("test://127.0.0.1:123/system", "test", "127.0.0.1", 123, "/system", NULL, NULL, NULL); TEST_PARSE("test://example.com:123/system?name=value#foo", "test", "example.com", 123, "/system", "name=value", "foo", NULL, params);
TEST_PARSE("test://[::1]:123/system", "test", "::1", 123, "/system", NULL, NULL, NULL); TEST_PARSE("test://127.0.0.1:123/system", "test", "127.0.0.1", 123, "/system", NULL, NULL, NULL, NULL);
TEST_PARSE("test://[2001:41c8:1:4fd4::2]:123/system", "test", "2001:41c8:1:4fd4::2", 123, "/system", NULL, NULL, NULL); TEST_PARSE("test://[::1]:123/system", "test", "::1", 123, "/system", NULL, NULL, NULL, NULL);
TEST_PARSE("test://[2001:41c8:1:4fd4::2]:123/system", "test", "2001:41c8:1:4fd4::2", 123, "/system", NULL, NULL, NULL, NULL);
virURIParam params1[] = { virURIParam params1[] = {
{ (char*)"foo", (char*)"one" }, { (char*)"foo", (char*)"one" },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册