diff options
-rw-r--r-- | lib/url.c | 28 | ||||
-rw-r--r-- | tests/data/test2072 | 20 |
2 files changed, 13 insertions, 35 deletions
@@ -2067,15 +2067,6 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data, return CURLE_URL_MALFORMAT; } - if(url_has_scheme && path[0] == '/' && path[1] == '/' && - path[2] == '/' && path[3] == '/') { - /* This appears to be a UNC string (usually indicating a SMB share). - * We don't do SMB in file: URLs. (TODO?) - */ - failf(data, "SMB shares are not supported in file: URLs."); - return CURLE_URL_MALFORMAT; - } - /* Extra handling URLs with an authority component (i.e. that start with * "file://") * @@ -2114,25 +2105,6 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data, ptr += 9; /* now points to the slash after the host */ } - /* - * RFC 8089, Appendix D, Section D.1, says: - * - * > In a POSIX file system, the root of the file system is represented - * > as a directory with a zero-length name, usually written as "/"; the - * > presence of this root in a file URI can be taken as given by the - * > initial slash in the "path-absolute" rule. - * - * i.e. the first slash is part of the path. - * - * However in RFC 1738 the "/" between the host (or port) and the - * URL-path was NOT part of the URL-path. Any agent that followed the - * older spec strictly, and wanted to refer to a file with an absolute - * path, would have included a second slash. So if there are two - * slashes, swallow one. - */ - if('/' == ptr[1]) /* note: the only way ptr[0]!='/' is if ptr[1]==':' */ - ptr++; - /* This cannot be done with strcpy, as the memory chunks overlap! */ memmove(path, ptr, strlen(ptr) + 1); } diff --git a/tests/data/test2072 b/tests/data/test2072 index 2949c2502..0d2489ff1 100644 --- a/tests/data/test2072 +++ b/tests/data/test2072 @@ -6,6 +6,13 @@ FILE </info> <reply> +<data> +foo + bar +bar + foo +moo +</data> </reply> # Client-side @@ -14,12 +21,15 @@ FILE file </server> <name> -file:// with SMB path +file:// with unix path resolution behavior for the case of extra slashes </name> <command> -file:////bad-host%PWD/log/test1145.txt +file:////%PWD/log/test2072.txt </command> -<file name="log/test1145.txt"> +<precheck> +perl -e "print 'Test requires a unix system' if ( $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'dos');" +</precheck> +<file name="log/test2072.txt"> foo bar bar @@ -30,9 +40,5 @@ moo # Verify data after the test has been "shot" <verify> -# CURLE_URL_MALFORMAT is error code 3 -<errorcode> -3 -</errorcode> </verify> </testcase> |