Commit 165585bd authored by Damien Fouilleul's avatar Damien Fouilleul

URI: when pasring for protocol headers allow for more characters than just alpha

parent a99f23a0
...@@ -181,10 +181,19 @@ LPWSTR CombineURL(LPCWSTR baseUrl, LPCWSTR url) ...@@ -181,10 +181,19 @@ LPWSTR CombineURL(LPCWSTR baseUrl, LPCWSTR url)
{ {
// validate protocol header // validate protocol header
const wchar_t *start = url; const wchar_t *start = url;
while( start != end ) { wchar_t c = *start;
wchar_t c = towlower(*start); if( iswalpha(c) )
if( (c < L'a') || (c > L'z') ) {
// not a valid protocol header, assume relative URL ++start;
while( start != end )
{
c = *start;
if( ! (iswalnum(c)
|| (L'-' == c)
|| (L'+' == c)
|| (L'.' == c)
|| (L'/' == c)) ) /* VLC uses / to allow user to specify a demuxer */
// not valid protocol header, assume relative URL
goto relativeurl; goto relativeurl;
++start; ++start;
} }
...@@ -198,6 +207,7 @@ LPWSTR CombineURL(LPCWSTR baseUrl, LPCWSTR url) ...@@ -198,6 +207,7 @@ LPWSTR CombineURL(LPCWSTR baseUrl, LPCWSTR url)
} }
return href; return href;
} }
}
relativeurl: relativeurl:
......
...@@ -90,7 +90,7 @@ NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[]) ...@@ -90,7 +90,7 @@ NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[])
{ {
if( i_type == REG_SZ ) if( i_type == REG_SZ )
{ {
strcat( p_data, "\\plugins" ); strcat( p_data, "\\plugins000" );
ppsz_argv[ppsz_argc++] = "--plugin-path"; ppsz_argv[ppsz_argc++] = "--plugin-path";
ppsz_argv[ppsz_argc++] = p_data; ppsz_argv[ppsz_argc++] = p_data;
} }
...@@ -99,7 +99,7 @@ NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[]) ...@@ -99,7 +99,7 @@ NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[])
} }
ppsz_argv[ppsz_argc++] = "--no-one-instance"; ppsz_argv[ppsz_argc++] = "--no-one-instance";
#if 0 #if 1
ppsz_argv[0] = "C:\\Cygwin\\home\\damienf\\vlc-trunk\\vlc"; ppsz_argv[0] = "C:\\Cygwin\\home\\damienf\\vlc-trunk\\vlc";
#endif #endif
...@@ -290,9 +290,18 @@ char *VlcPlugin::getAbsoluteURL(const char *url) ...@@ -290,9 +290,18 @@ char *VlcPlugin::getAbsoluteURL(const char *url)
{ {
// validate protocol header // validate protocol header
const char *start = url; const char *start = url;
while( start != end ) { char c = *start;
char c = tolower(*start); if( isalpha(c) )
if( (c < 'a') || (c > 'z') ) {
++start;
while( start != end )
{
c = *start;
if( ! (isalnum(c)
|| ('-' == c)
|| ('+' == c)
|| ('.' == c)
|| ('/' == c)) ) /* VLC uses / to allow user to specify a demuxer */
// not valid protocol header, assume relative URL // not valid protocol header, assume relative URL
goto relativeurl; goto relativeurl;
++start; ++start;
...@@ -300,6 +309,8 @@ char *VlcPlugin::getAbsoluteURL(const char *url) ...@@ -300,6 +309,8 @@ char *VlcPlugin::getAbsoluteURL(const char *url)
/* we have a protocol header, therefore URL is absolute */ /* we have a protocol header, therefore URL is absolute */
return strdup(url); return strdup(url);
} }
// not a valid protocol header, assume relative URL
}
relativeurl: relativeurl:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment