diff --git a/mozilla/extensions/cookie/nsCookieService.cpp b/mozilla/extensions/cookie/nsCookieService.cpp index 4f56f492ecd..e689043f1a9 100644 --- a/mozilla/extensions/cookie/nsCookieService.cpp +++ b/mozilla/extensions/cookie/nsCookieService.cpp @@ -122,8 +122,7 @@ nsCookieService::OnEndURLLoad } NS_IMETHODIMP -nsCookieService::GetCookieString(nsIURI *aURL, char ** aCookie) -{ +nsCookieService::GetCookieString(nsIURI *aURL, char ** aCookie) { nsXPIDLCString spec; nsresult rv = aURL->GetSpec(getter_Copies(spec)); if (NS_FAILED(rv)) return rv; @@ -132,18 +131,21 @@ nsCookieService::GetCookieString(nsIURI *aURL, char ** aCookie) } NS_IMETHODIMP -nsCookieService::GetCookieStringFromHttp(nsIURI *aURL, nsIURI *aFirstURL, char ** aCookie) -{ - NS_ENSURE_ARG_POINTER(aURL); - NS_ENSURE_ARG_POINTER(aFirstURL); - +nsCookieService::GetCookieStringFromHttp(nsIURI *aURL, nsIURI *aFirstURL, char ** aCookie) { + if (!aURL) { + return NS_ERROR_FAILURE; + } nsXPIDLCString spec; nsresult rv = aURL->GetSpec(getter_Copies(spec)); if (NS_FAILED(rv)) return rv; - nsXPIDLCString firstSpec; - rv = aFirstURL->GetSpec(getter_Copies(firstSpec)); - if (NS_FAILED(rv)) return rv; - *aCookie = COOKIE_GetCookieFromHttp((char *)(const char *)spec, (char *)(const char *)firstSpec); + if (aFirstURL) { + nsXPIDLCString firstSpec; + rv = aFirstURL->GetSpec(getter_Copies(firstSpec)); + if (NS_FAILED(rv)) return rv; + *aCookie = COOKIE_GetCookieFromHttp((char *)(const char *)spec, (char *)(const char *)firstSpec); + } else { + *aCookie = COOKIE_GetCookieFromHttp((char *)(const char *)spec, nsnull); + } return NS_OK; } diff --git a/mozilla/extensions/cookie/nsCookies.cpp b/mozilla/extensions/cookie/nsCookies.cpp index 74c3349ea5a..bbc954f3ee9 100644 --- a/mozilla/extensions/cookie/nsCookies.cpp +++ b/mozilla/extensions/cookie/nsCookies.cpp @@ -620,7 +620,7 @@ PUBLIC char * COOKIE_GetCookieFromHttp(char * address, char * firstAddress) { if ((cookie_GetBehaviorPref() == PERMISSION_DontAcceptForeign) && - cookie_isForeign(address, firstAddress)) { + (!firstAddress || cookie_isForeign(address, firstAddress))) { /* * WARNING!!! This is a different behavior than 4.x. In 4.x we used this pref to