diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-27 21:14:59 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-27 21:14:59 +0000 |
commit | ad31ae07a1f51fa382fa214de28ca4f371ceaee2 (patch) | |
tree | 7c33d7bdf89b6f9cc38aef296c5fb441e9947e0a /net/third_party | |
parent | cf7d03ddffba3982b2e724291650a48912a3532e (diff) | |
download | chromium_src-ad31ae07a1f51fa382fa214de28ca4f371ceaee2.zip chromium_src-ad31ae07a1f51fa382fa214de28ca4f371ceaee2.tar.gz chromium_src-ad31ae07a1f51fa382fa214de28ca4f371ceaee2.tar.bz2 |
Revert "net: Precede each CBC encrypted application data record with an empty one."
This reverts commit 71c84a00ba9eb06356176514c392043b585bf2d8.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90643 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/third_party')
-rw-r--r-- | net/third_party/nss/README.chromium | 5 | ||||
-rwxr-xr-x | net/third_party/nss/patches/applypatches.sh | 2 | ||||
-rw-r--r-- | net/third_party/nss/patches/cbcrandomiv.patch | 73 | ||||
-rw-r--r-- | net/third_party/nss/ssl/ssl3con.c | 28 |
4 files changed, 2 insertions, 106 deletions
diff --git a/net/third_party/nss/README.chromium b/net/third_party/nss/README.chromium index f0c757c..09da4d9 100644 --- a/net/third_party/nss/README.chromium +++ b/net/third_party/nss/README.chromium @@ -47,11 +47,6 @@ Patches: patches/cachedinfo.patch https://bugzilla.mozilla.org/show_bug.cgi?id=665739 - * Precede each set of CBC encrypted application data records, resulting from - a single call to ssl3_SendApplicationData, with an empty application data - record in order to randomize the IV in a backwards compatible manner. - patches/cbcrandomiv.patch - Apply the patches to NSS by running the patches/applypatches.sh script. Read the comments at the top of patches/applypatches.sh for instructions. diff --git a/net/third_party/nss/patches/applypatches.sh b/net/third_party/nss/patches/applypatches.sh index b58fe5e..c6609ca 100755 --- a/net/third_party/nss/patches/applypatches.sh +++ b/net/third_party/nss/patches/applypatches.sh @@ -20,5 +20,3 @@ patch -p6 < $patches_dir/ocspstapling.patch patch -p6 < $patches_dir/clientauth.patch patch -p6 < $patches_dir/cachedinfo.patch - -patch -p6 < $patches_dir/cbcrandomiv.patch diff --git a/net/third_party/nss/patches/cbcrandomiv.patch b/net/third_party/nss/patches/cbcrandomiv.patch deleted file mode 100644 index 9f1b57a..0000000 --- a/net/third_party/nss/patches/cbcrandomiv.patch +++ /dev/null @@ -1,73 +0,0 @@ -commit 36840201a321147d9c33a944784ff56980aae5d8 -Author: Adam Langley <agl@chromium.org> -Date: Wed Jun 22 13:36:50 2011 -0400 - - cbcrandomiv.patch - -diff --git a/mozilla/security/nss/lib/ssl/ssl3con.c b/mozilla/security/nss/lib/ssl/ssl3con.c -index 2cc1e05..eb7d63e 100644 ---- a/mozilla/security/nss/lib/ssl/ssl3con.c -+++ b/mozilla/security/nss/lib/ssl/ssl3con.c -@@ -2229,7 +2229,7 @@ ssl3_SendRecord( sslSocket * ss, - return SECFailure; - } - -- while (nIn > 0) { -+ do { - PRUint32 contentLen = PR_MIN(nIn, MAX_FRAGMENT_LENGTH); - - if (wrBuf->space < contentLen + SSL3_BUFFER_FUDGE) { -@@ -2306,7 +2306,7 @@ ssl3_SendRecord( sslSocket * ss, - } - } - totalSent += contentLen; -- } -+ } while (nIn > 0); - return totalSent; - } - -@@ -2321,6 +2321,7 @@ ssl3_SendApplicationData(sslSocket *ss, const unsigned char *in, - { - PRInt32 totalSent = 0; - PRInt32 discarded = 0; -+ PRBool isBlockCipher; - - PORT_Assert( ss->opt.noLocks || ssl_HaveXmitBufLock(ss) ); - if (len < 0 || !in) { -@@ -2345,6 +2346,28 @@ ssl3_SendApplicationData(sslSocket *ss, const unsigned char *in, - len--; - discarded = 1; - } -+ -+ ssl_GetSpecReadLock(ss); -+ isBlockCipher = ss->ssl3.cwSpec->cipher_def->type == type_block; -+ ssl_ReleaseSpecReadLock(ss); -+ -+ if (isBlockCipher && len > 0) { -+ // We assume that block ciphers are used in CBC mode and prepend an -+ // empty record. This effectively randomizes the IV in a backwards -+ // compatible way. -+ PRInt32 sent = ssl3_SendRecord(ss, content_application_data, -+ in, 0 /* no payload */, flags); -+ if (sent < 0) { -+ return SECFailure; /* error code set by ssl3_SendRecord */ -+ } -+ if (ss->pendingBuf.len) { -+ /* must be a non-blocking socket */ -+ PORT_Assert(!ssl_SocketIsBlocking(ss)); -+ PORT_Assert(ss->lastWriteBlocked); -+ return SECFailure; -+ } -+ } -+ - while (len > totalSent) { - PRInt32 sent, toSend; - -@@ -2377,6 +2400,7 @@ ssl3_SendApplicationData(sslSocket *ss, const unsigned char *in, - break; - } - } -+ - if (ss->pendingBuf.len) { - /* Must be non-blocking. */ - PORT_Assert(!ssl_SocketIsBlocking(ss)); diff --git a/net/third_party/nss/ssl/ssl3con.c b/net/third_party/nss/ssl/ssl3con.c index eb7d63e..2cc1e05 100644 --- a/net/third_party/nss/ssl/ssl3con.c +++ b/net/third_party/nss/ssl/ssl3con.c @@ -2229,7 +2229,7 @@ ssl3_SendRecord( sslSocket * ss, return SECFailure; } - do { + while (nIn > 0) { PRUint32 contentLen = PR_MIN(nIn, MAX_FRAGMENT_LENGTH); if (wrBuf->space < contentLen + SSL3_BUFFER_FUDGE) { @@ -2306,7 +2306,7 @@ ssl3_SendRecord( sslSocket * ss, } } totalSent += contentLen; - } while (nIn > 0); + } return totalSent; } @@ -2321,7 +2321,6 @@ ssl3_SendApplicationData(sslSocket *ss, const unsigned char *in, { PRInt32 totalSent = 0; PRInt32 discarded = 0; - PRBool isBlockCipher; PORT_Assert( ss->opt.noLocks || ssl_HaveXmitBufLock(ss) ); if (len < 0 || !in) { @@ -2346,28 +2345,6 @@ ssl3_SendApplicationData(sslSocket *ss, const unsigned char *in, len--; discarded = 1; } - - ssl_GetSpecReadLock(ss); - isBlockCipher = ss->ssl3.cwSpec->cipher_def->type == type_block; - ssl_ReleaseSpecReadLock(ss); - - if (isBlockCipher && len > 0) { - // We assume that block ciphers are used in CBC mode and prepend an - // empty record. This effectively randomizes the IV in a backwards - // compatible way. - PRInt32 sent = ssl3_SendRecord(ss, content_application_data, - in, 0 /* no payload */, flags); - if (sent < 0) { - return SECFailure; /* error code set by ssl3_SendRecord */ - } - if (ss->pendingBuf.len) { - /* must be a non-blocking socket */ - PORT_Assert(!ssl_SocketIsBlocking(ss)); - PORT_Assert(ss->lastWriteBlocked); - return SECFailure; - } - } - while (len > totalSent) { PRInt32 sent, toSend; @@ -2400,7 +2377,6 @@ ssl3_SendApplicationData(sslSocket *ss, const unsigned char *in, break; } } - if (ss->pendingBuf.len) { /* Must be non-blocking. */ PORT_Assert(!ssl_SocketIsBlocking(ss)); |