aboutsummaryrefslogtreecommitdiffstats
path: root/embed/mozilla/mozilla-embed-single.cpp
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2004-07-05 07:56:26 +0800
committerChristian Persch <chpe@src.gnome.org>2004-07-05 07:56:26 +0800
commit88b80a860b47b19756c162df89307a58a43ceeeb (patch)
treef89f003b7dcd6dcdc53cfee11aff027f380ad32e /embed/mozilla/mozilla-embed-single.cpp
parentcb2cadac4196048e1caf47bb9a876d6edc2cfa34 (diff)
downloadgsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.tar
gsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.tar.gz
gsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.tar.bz2
gsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.tar.lz
gsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.tar.xz
gsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.tar.zst
gsoc2013-epiphany-88b80a860b47b19756c162df89307a58a43ceeeb.zip
Decode ACE for UI, and encode UTF-8 hostnames before using cookie and
2004-07-05 Christian Persch <chpe@cvs.gnome.org> * embed/mozilla/EphySingle.cpp: * embed/mozilla/mozilla-embed-single.cpp: Decode ACE for UI, and encode UTF-8 hostnames before using cookie and passwords functions with them. Fixes bug #130930.
Diffstat (limited to 'embed/mozilla/mozilla-embed-single.cpp')
-rw-r--r--embed/mozilla/mozilla-embed-single.cpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/embed/mozilla/mozilla-embed-single.cpp b/embed/mozilla/mozilla-embed-single.cpp
index 9556d8227..0ee08f9d4 100644
--- a/embed/mozilla/mozilla-embed-single.cpp
+++ b/embed/mozilla/mozilla-embed-single.cpp
@@ -78,6 +78,7 @@
#include <nsICacheService.h>
#include <nsIFontEnumerator.h>
#include <nsNetCID.h>
+#include <nsIIDNService.h>
#endif
#define MOZILLA_PROFILE_DIR "/mozilla"
@@ -655,6 +656,7 @@ impl_list_cookies (EphyCookieManager *manager)
if (NS_FAILED (result) || !keks) continue;
EphyCookie *cookie = mozilla_cookie_to_ephy_cookie (keks);
+ if (!cookie) continue;
cookies = g_list_prepend (cookies, cookie);
}
@@ -670,7 +672,16 @@ impl_remove_cookie (EphyCookieManager *manager,
do_GetService (NS_COOKIEMANAGER_CONTRACTID);
if (!cookieManager) return;
- cookieManager->Remove (nsEmbedCString(cookie->domain),
+ nsCOMPtr<nsIIDNService> idnService
+ (do_GetService ("@mozilla.org/network/idn-service;1"));
+ NS_ENSURE_TRUE (idnService, );
+
+ nsresult rv;
+ nsEmbedCString host;
+ rv = idnService->ConvertUTF8toACE (nsEmbedCString(cookie->domain), host);
+ NS_ENSURE_SUCCESS (rv, );
+
+ cookieManager->Remove (host,
nsEmbedCString(cookie->name),
nsEmbedCString(cookie->path),
PR_FALSE /* block */);
@@ -698,6 +709,10 @@ impl_list_passwords (EphyPasswordManager *manager)
do_GetService (NS_PASSWORDMANAGER_CONTRACTID);
if (!passwordManager) return NULL;
+ nsCOMPtr<nsIIDNService> idnService
+ (do_GetService ("@mozilla.org/network/idn-service;1"));
+ NS_ENSURE_TRUE (idnService, NULL);
+
nsCOMPtr<nsISimpleEnumerator> passwordEnumerator;
passwordManager->GetEnumerator (getter_AddRefs(passwordEnumerator));
NS_ENSURE_TRUE (passwordEnumerator, NULL);
@@ -715,6 +730,9 @@ impl_list_passwords (EphyPasswordManager *manager)
rv = nsPassword->GetHost (transfer);
if (NS_FAILED (rv)) continue;
+ nsEmbedCString host;
+ idnService->ConvertACEtoUTF8 (transfer, host);
+
nsEmbedString unicodeName;
rv = nsPassword->GetUser (unicodeName);
if (NS_FAILED (rv)) continue;
@@ -725,7 +743,7 @@ impl_list_passwords (EphyPasswordManager *manager)
EphyPasswordInfo *p = g_new0 (EphyPasswordInfo, 1);
- p->host = g_strdup (transfer.get());
+ p->host = g_strdup (host.get());
p->username = g_strdup (userName.get());
p->password = NULL;
@@ -744,10 +762,19 @@ impl_remove_password (EphyPasswordManager *manager,
do_GetService (NS_PASSWORDMANAGER_CONTRACTID);
if (!pm) return;
+ nsCOMPtr<nsIIDNService> idnService
+ (do_GetService ("@mozilla.org/network/idn-service;1"));
+ NS_ENSURE_TRUE (idnService, );
+
+ nsresult rv;
+ nsEmbedCString host;
+ rv = idnService->ConvertUTF8toACE (nsEmbedCString(info->host), host);
+ NS_ENSURE_SUCCESS (rv, );
+
nsEmbedString userName;
NS_CStringToUTF16 (nsEmbedCString(info->username),
NS_CSTRING_ENCODING_UTF8, userName);
- pm->RemoveUser (nsEmbedCString(info->host), userName);
+ pm->RemoveUser (host, userName);
}
static void