From 28a02271f006f8b21a1b91a23ba22c3a0b9faaef Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Mon, 19 Oct 2015 08:52:28 +0100 Subject: [PATCH] ITS#8273 Windows file:// URL fixup --- libraries/libldap/fetch.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/libraries/libldap/fetch.c b/libraries/libldap/fetch.c index 1d68fda0c4..6c65d82f14 100644 --- a/libraries/libldap/fetch.c +++ b/libraries/libldap/fetch.c @@ -50,9 +50,22 @@ ldif_open_url( /* we don't check for LDAP_DIRSEP since URLs should contain '/' */ if ( urlstr[0] == '/' && urlstr[1] == '/' ) { urlstr += 2; - /* path must be absolute if authority is present */ - if ( urlstr[0] != '/' ) + /* path must be absolute if authority is present + * technically, file://hostname/path is also legal but we don't + * accept a non-empty hostname + */ + if ( urlstr[0] != '/' ) { +#ifdef _WIN32 + /* An absolute path in improper file://C:/foo/bar format */ + if ( urlstr[1] != ':' ) +#endif return NULL; + } +#ifdef _WIN32 + /* An absolute path in proper file:///C:/foo/bar format */ + if ( urlstr[2] == ':' ) + urlstr++; +#endif } p = ber_strdup( urlstr ); -- 2.39.5