Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
1 //* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "nsILocalFile.h"
7 #include "nsCRT.h"
8 #include "nsIFile.h"
9 #include "nsISupportsImpl.h"
10 #include "nsCheckSummedOutputStream.h"
12 ////////////////////////////////////////////////////////////////////////////////
13 // nsCheckSummedOutputStream
15 NS_IMPL_ISUPPORTS_INHERITED(nsCheckSummedOutputStream,
16 nsSafeFileOutputStream,
17 nsISafeOutputStream,
18 nsIOutputStream,
19 nsIFileOutputStream)
21 NS_IMETHODIMP
22 nsCheckSummedOutputStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm,
23 int32_t behaviorFlags)
24 {
25 nsresult rv;
26 mHash = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv);
27 NS_ENSURE_SUCCESS(rv, rv);
29 rv = mHash->Init(nsICryptoHash::MD5);
30 NS_ENSURE_SUCCESS(rv, rv);
32 return nsSafeFileOutputStream::Init(file, ioFlags, perm, behaviorFlags);
33 }
35 NS_IMETHODIMP
36 nsCheckSummedOutputStream::Finish()
37 {
38 nsresult rv = mHash->Finish(false, mCheckSum);
39 NS_ENSURE_SUCCESS(rv, rv);
41 uint32_t written;
42 rv = nsSafeFileOutputStream::Write(reinterpret_cast<const char*>(mCheckSum.BeginReading()),
43 mCheckSum.Length(), &written);
44 NS_ASSERTION(written == mCheckSum.Length(), "Error writing stream checksum");
45 NS_ENSURE_SUCCESS(rv, rv);
47 return nsSafeFileOutputStream::Finish();
48 }
50 NS_IMETHODIMP
51 nsCheckSummedOutputStream::Write(const char *buf, uint32_t count, uint32_t *result)
52 {
53 nsresult rv = mHash->Update(reinterpret_cast<const uint8_t*>(buf), count);
54 NS_ENSURE_SUCCESS(rv, rv);
56 return nsSafeFileOutputStream::Write(buf, count, result);
57 }
59 ////////////////////////////////////////////////////////////////////////////////