urlmon: Call remove_dot_segments on path opaque for mk: protocol.
This commit is contained in:
parent
3c6c6e9d94
commit
4454770cbc
|
@ -3963,6 +3963,156 @@ static const uri_properties uri_tests[] = {
|
|||
{URL_SCHEME_RES,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
},
|
||||
{ "mk:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg", 0, S_OK, FALSE,
|
||||
{
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{".jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\test.chm::/images/xxx.jpg",S_OK,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\test.chm::/images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"mk",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_UNKNOWN,S_OK,FALSE},
|
||||
{0,S_FALSE,FALSE},
|
||||
{URL_SCHEME_MK,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
},
|
||||
{ "mk:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg", Uri_CREATE_NO_CANONICALIZE, S_OK, FALSE,
|
||||
{
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{".jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"mk",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_UNKNOWN,S_OK,FALSE},
|
||||
{0,S_FALSE,FALSE},
|
||||
{URL_SCHEME_MK,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
},
|
||||
{ "xx:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg", 0, S_OK, FALSE,
|
||||
{
|
||||
{"xx:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"xx:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{".jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"xx:@MSITStore:Z:\\dir\\test.chm::/html/../images/xxx.jpg",S_OK,FALSE},
|
||||
{"xx",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_UNKNOWN,S_OK,FALSE},
|
||||
{0,S_FALSE,FALSE},
|
||||
{URL_SCHEME_UNKNOWN,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
},
|
||||
{ "mk:@MSITStore:Z:\\dir\\test.chm::/html/../../images/xxx.jpg", 0, S_OK, FALSE,
|
||||
{
|
||||
{"mk:@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{".jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/html/../../images/xxx.jpg",S_OK,FALSE},
|
||||
{"mk",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_UNKNOWN,S_OK,FALSE},
|
||||
{0,S_FALSE,FALSE},
|
||||
{URL_SCHEME_MK,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
},
|
||||
{ "mk:@MSITStore:Z:\\dir\\dir2\\..\\test.chm::/html/../../images/xxx.jpg", 0, S_OK, FALSE,
|
||||
{
|
||||
{"mk:@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{".jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"@MSITStore:Z:\\dir\\images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\dir2\\..\\test.chm::/html/../../images/xxx.jpg",S_OK,FALSE},
|
||||
{"mk",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_UNKNOWN,S_OK,FALSE},
|
||||
{0,S_FALSE,FALSE},
|
||||
{URL_SCHEME_MK,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
},
|
||||
{ "mk:@MSITStore:Z:\\dir\\test.chm::/html/../../../../images/xxx.jpg", 0, S_OK, FALSE,
|
||||
{
|
||||
{"mk:images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{".jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"images/xxx.jpg",S_OK,FALSE},
|
||||
{"images/xxx.jpg",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"mk:@MSITStore:Z:\\dir\\test.chm::/html/../../../../images/xxx.jpg",S_OK,FALSE},
|
||||
{"mk",S_OK,FALSE},
|
||||
{"",S_FALSE,FALSE},
|
||||
{"",S_FALSE,FALSE}
|
||||
},
|
||||
{
|
||||
{Uri_HOST_UNKNOWN,S_OK,FALSE},
|
||||
{0,S_FALSE,FALSE},
|
||||
{URL_SCHEME_MK,S_OK,FALSE},
|
||||
{URLZONE_INVALID,E_NOTIMPL,FALSE}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -3152,6 +3152,12 @@ static BOOL canonicalize_path_opaque(const parse_data *data, Uri *uri, DWORD fla
|
|||
}
|
||||
}
|
||||
|
||||
if(data->scheme_type == URL_SCHEME_MK && !computeOnly && !(flags & Uri_CREATE_NO_CANONICALIZE)) {
|
||||
DWORD new_len = remove_dot_segments(uri->canon_uri + uri->path_start,
|
||||
uri->canon_len - uri->path_start);
|
||||
uri->canon_len = uri->path_start + new_len;
|
||||
}
|
||||
|
||||
uri->path_len = uri->canon_len - uri->path_start;
|
||||
|
||||
TRACE("(%p %p %x %d): Canonicalized opaque URI path %s len=%d\n", data, uri, flags, computeOnly,
|
||||
|
|
Loading…
Reference in New Issue