diff --git a/mozilla/netwerk/base/src/nsIOService.cpp b/mozilla/netwerk/base/src/nsIOService.cpp index 74888eb46b1..c348466a5b9 100644 --- a/mozilla/netwerk/base/src/nsIOService.cpp +++ b/mozilla/netwerk/base/src/nsIOService.cpp @@ -540,6 +540,9 @@ nsIOService::ExtractUrlPart(const char *urlString, PRInt16 flag, PRUint32 *start nsresult rv; nsXPIDLCString scheme; + if (urlPart) + *urlPart = nsnull; + ExtractScheme(urlString, startPos, endPos, getter_Copies(scheme)); if (flag == url_Scheme) { @@ -569,6 +572,9 @@ nsIOService::ExtractUrlPart(const char *urlString, PRInt16 flag, PRUint32 *start PRInt32 usernameLen, passwordLen, hostnameLen; PRInt32 port; + if (authLen < 0) + return NS_OK; + rv = parser->ParseAuthority(urlString + authPos, authLen, &usernamePos, &usernameLen, &passwordPos, &passwordLen, @@ -617,6 +623,9 @@ nsIOService::ExtractUrlPart(const char *urlString, PRInt16 flag, PRUint32 *start PRUint32 filepathPos, paramPos, queryPos, refPos; PRInt32 filepathLen, paramLen, queryLen, refLen; + if (pathLen < 0) + return NS_OK; + rv = parser->ParsePath(urlString + pathPos, pathLen, &filepathPos, &filepathLen, ¶mPos, ¶mLen,