Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: patches.chromium/0006-lhashfix.patch

Issue 2072073002: Delete bundled copy of OpenSSL and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/openssl@master
Patch Set: Delete bundled copy of OpenSSL and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « patches.chromium/0005-reduce_client_hello_size.patch ('k') | patches.chromium/0007-chacha.patch » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: patches.chromium/0006-lhashfix.patch
diff --git a/patches.chromium/0006-lhashfix.patch b/patches.chromium/0006-lhashfix.patch
deleted file mode 100644
index f8e6119c266a23bfe484e493aa40e8c4897893a7..0000000000000000000000000000000000000000
--- a/patches.chromium/0006-lhashfix.patch
+++ /dev/null
@@ -1,347 +0,0 @@
-diff -burN android-openssl.orig/openssl.config android-openssl-lhash2/openssl.config
---- android-openssl.orig/openssl.config 2013-11-05 14:11:10.833326408 -0500
-+++ android-openssl-lhash2/openssl.config 2013-11-05 14:38:31.187575574 -0500
-@@ -997,6 +997,7 @@
- fix_clang_build.patch \
- x509_hash_name_algorithm_change.patch \
- reduce_client_hello_size.patch \
-+fix_lhash_iteration.patch \
- "
-
- OPENSSL_PATCHES_progs_SOURCES="\
-@@ -1060,3 +1061,13 @@
- OPENSSL_PATCHES_reduce_client_hello_size_SOURCES="\
- ssl/t1_lib.c \
- "
-+
-+OPENSSL_PATCHES_fix_lhash_iteration_SOURCES="\
-+crypto/conf/conf_api.c
-+crypto/lhash/lhash.c
-+crypto/lhash/lhash.h
-+crypto/objects/o_names.c
-+crypto/objects/obj_dat.c
-+include/openssl/lhash.h
-+ssl/ssl_sess.c
-+"
-diff -burN android-openssl.orig/patches/fix_lhash_iteration.patch android-openssl-lhash2/patches/fix_lhash_iteration.patch
---- android-openssl.orig/patches/fix_lhash_iteration.patch 1969-12-31 19:00:00.000000000 -0500
-+++ android-openssl-lhash2/patches/fix_lhash_iteration.patch 2013-11-05 14:38:15.067738011 -0500
-@@ -0,0 +1,318 @@
-+diff -burN android-openssl.orig/crypto/conf/conf_api.c android-openssl-lhash/crypto/conf/conf_api.c
-+--- android-openssl.orig/crypto/conf/conf_api.c 2013-02-11 10:26:04.000000000 -0500
-++++ android-openssl-lhash/crypto/conf/conf_api.c 2013-11-05 14:16:49.500027656 -0500
-+@@ -225,9 +225,6 @@
-+ {
-+ if (conf == NULL || conf->data == NULL) return;
-+
-+- lh_CONF_VALUE_down_load(conf->data)=0; /* evil thing to make
-+- * sure the 'OPENSSL_free()' works as
-+- * expected */
-+ lh_CONF_VALUE_doall_arg(conf->data,
-+ LHASH_DOALL_ARG_FN(value_free_hash),
-+ LHASH_OF(CONF_VALUE), conf->data);
-+diff -burN android-openssl.orig/crypto/lhash/lhash.c android-openssl-lhash/crypto/lhash/lhash.c
-+--- android-openssl.orig/crypto/lhash/lhash.c 2013-02-11 10:26:04.000000000 -0500
-++++ android-openssl-lhash/crypto/lhash/lhash.c 2013-11-05 14:16:49.500027656 -0500
-+@@ -94,6 +94,7 @@
-+ *
-+ * 1.0 eay - First version
-+ */
-++#include <limits.h>
-+ #include <stdio.h>
-+ #include <string.h>
-+ #include <stdlib.h>
-+@@ -107,6 +108,113 @@
-+ #define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */
-+ #define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */
-+
-++/* Maximum number of nodes to guarantee the load computations don't overflow */
-++#define MAX_LOAD_ITEMS (UINT_MAX / LH_LOAD_MULT)
-++
-++/* The field 'iteration_state' is used to hold data to ensure that a hash
-++ * table is not resized during an 'insert' or 'delete' operation performed
-++ * within a lh_doall/lh_doall_arg call.
-++ *
-++ * Conceptually, this records two things:
-++ *
-++ * - A 'depth' count, which is incremented at the start of lh_doall*,
-++ * and decremented just before it returns.
-++ *
-++ * - A 'mutated' boolean flag, which is set in lh_insert() or lh_delete()
-++ * when the operation is performed with a non-0 depth.
-++ *
-++ * The following are helper macros to handle this state in a more explicit
-++ * way.
-++ */
-++
-++/* Reset the iteration state to its defaults. */
-++#define LH_ITERATION_RESET(lh) do { \
-++ (lh)->iteration_state = 0; \
-++ } while (0)
-++
-++/* Returns 1 if the hash table is currently being iterated on, 0 otherwise. */
-++#define LH_ITERATION_IS_ACTIVE(lh) ((lh)->iteration_state >= 2)
-++
-++/* Increment iteration depth. This should always be followed by a paired call
-++ * to LH_ITERATION_DECREMENT_DEPTH(). */
-++#define LH_ITERATION_INCREMENT_DEPTH(lh) do { \
-++ (lh)->iteration_state += 2; \
-++ } while (0)
-++
-++/* Decrement iteration depth. This should always be called after a paired call
-++ * to LH_ITERATION_INCREMENT_DEPTH(). */
-++#define LH_ITERATION_DECREMENT_DEPTH(lh) do { \
-++ (lh)->iteration_state -= 2; \
-++ } while (0)
-++
-++/* Return 1 if the iteration 'mutated' flag is set, 0 otherwise. */
-++#define LH_ITERATION_IS_MUTATED(lh) (((lh)->iteration_state & 1) != 0)
-++
-++/* Set the iteration 'mutated' flag to 1. LH_ITERATION_RESET() to reset it. */
-++#define LH_ITERATION_SET_MUTATED(lh) do { \
-++ (lh)->iteration_state |= 1; \
-++ } while (0)
-++
-++/* This macro returns 1 if the hash table should be expanded due to its current
-++ * load, or 0 otherwise. The exact comparison to be performed is expressed by
-++ * the mathematical expression (where '//' denotes division over real numbers):
-++ *
-++ * (num_items // num_nodes) >= (up_load // LOAD_MULT) or
-++ * (num_items * LOAD_MULT // num_nodes) >= up_load.
-++ *
-++ * Given that the C language operator '/' implements integer division, i.e:
-++ * a // b == (a / b) + epsilon (with 0 <= epsilon < 1, for positive a & b)
-++ *
-++ * This can be rewritten as:
-++ * (num_items * LOAD_MULT / num_nodes) + epsilon >= up_load
-++ * (num_items * LOAD_MULT / num_nodes) - up_load >= - epsilon
-++ *
-++ * Let's call 'A' the left-hand side of the equation above, it is an integer
-++ * and:
-++ * - If A >= 0, the expression is true for any value of epsilon.
-++ * - If A <= -1, the expression is also true for any value of epsilon.
-++ *
-++ * In other words, this is equivalent to 'A >= 0', or:
-++ * (num_items * LOAD_MULT / num_nodes) >= up_load
-++ */
-++#define LH_SHOULD_EXPAND(lh) \
-++ ((lh)->num_items < MAX_LOAD_ITEMS && \
-++ (((lh)->num_items*LH_LOAD_MULT/(lh)->num_nodes) >= (lh)->up_load))
-++
-++/* This macro returns 1 if the hash table should be contracted due to its
-++ * current load, or 0 otherwise. Abbreviated computations are:
-++ *
-++ * (num_items // num_nodes) <= (down_load // LOAD_MULT)
-++ * (num_items * LOAD_MULT // num_nodes) <= down_load
-++ * (num_items * LOAD_MULT / num_nodes) + epsilon <= down_load
-++ * (num_items * LOAD_MULT / num_nodes) - down_load <= -epsilon
-++ *
-++ * Let's call 'B' the left-hand side of the equation above:
-++ * - If B <= -1, the expression is true for any value of epsilon.
-++ * - If B >= 1, the expression is false for any value of epsilon.
-++ * - If B == 0, the expression is true for 'epsilon == 0', and false
-++ * otherwise, which is problematic.
-++ *
-++ * To work around this problem, while keeping the code simple, just change
-++ * the initial expression to use a strict inequality, i.e.:
-++ *
-++ * (num_items // num_nodes) < (down_load // LOAD_MULT)
-++ *
-++ * Which leads to:
-++ * (num_items * LOAD_MULT / num_nodes) - down_load < -epsilon
-++ *
-++ * Then:
-++ * - If 'B <= -1', the expression is true for any value of epsilon.
-++ * - If 'B' >= 0, the expression is false for any value of epsilon,
-++ *
-++ * In other words, this is equivalent to 'B < 0', or:
-++ * (num_items * LOAD_MULT / num_nodes) < down_load
-++ */
-++#define LH_SHOULD_CONTRACT(lh) \
-++ (((lh)->num_nodes > MIN_NODES) && \
-++ ((lh)->num_items < MAX_LOAD_ITEMS && \
-++ ((lh)->num_items*LH_LOAD_MULT/(lh)->num_nodes) < (lh)->down_load))
-++
-+ static void expand(_LHASH *lh);
-+ static void contract(_LHASH *lh);
-+ static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash);
-+@@ -147,6 +255,7 @@
-+ ret->num_hash_comps=0;
-+
-+ ret->error=0;
-++ LH_ITERATION_RESET(ret);
-+ return(ret);
-+ err1:
-+ OPENSSL_free(ret);
-+@@ -183,7 +292,10 @@
-+ void *ret;
-+
-+ lh->error=0;
-+- if (lh->up_load <= (lh->num_items*LH_LOAD_MULT/lh->num_nodes))
-++ /* Do not expand the array if the table is being iterated on. */
-++ if (LH_ITERATION_IS_ACTIVE(lh))
-++ LH_ITERATION_SET_MUTATED(lh);
-++ else if (LH_SHOULD_EXPAND(lh))
-+ expand(lh);
-+
-+ rn=getrn(lh,data,&hash);
-+@@ -238,8 +350,10 @@
-+ }
-+
-+ lh->num_items--;
-+- if ((lh->num_nodes > MIN_NODES) &&
-+- (lh->down_load >= (lh->num_items*LH_LOAD_MULT/lh->num_nodes)))
-++ /* Do not contract the array if the table is being iterated on. */
-++ if (LH_ITERATION_IS_ACTIVE(lh))
-++ LH_ITERATION_SET_MUTATED(lh);
-++ else if (LH_SHOULD_CONTRACT(lh))
-+ contract(lh);
-+
-+ return(ret);
-+@@ -276,6 +390,7 @@
-+ if (lh == NULL)
-+ return;
-+
-++ LH_ITERATION_INCREMENT_DEPTH(lh);
-+ /* reverse the order so we search from 'top to bottom'
-+ * We were having memory leaks otherwise */
-+ for (i=lh->num_nodes-1; i>=0; i--)
-+@@ -283,10 +398,7 @@
-+ a=lh->b[i];
-+ while (a != NULL)
-+ {
-+- /* 28/05/91 - eay - n added so items can be deleted
-+- * via lh_doall */
-+- /* 22/05/08 - ben - eh? since a is not passed,
-+- * this should not be needed */
-++ /* note that 'a' can be deleted by the callback */
-+ n=a->next;
-+ if(use_arg)
-+ func_arg(a->data,arg);
-+@@ -295,6 +407,19 @@
-+ a=n;
-+ }
-+ }
-++
-++ LH_ITERATION_DECREMENT_DEPTH(lh);
-++ if (!LH_ITERATION_IS_ACTIVE(lh) && LH_ITERATION_IS_MUTATED(lh))
-++ {
-++ LH_ITERATION_RESET(lh);
-++ /* Resize the buckets array if necessary. Each expand() or
-++ * contract() call will double/halve the size of the array,
-++ * respectively, so call them in a loop. */
-++ while (LH_SHOULD_EXPAND(lh))
-++ expand(lh);
-++ while (LH_SHOULD_CONTRACT(lh))
-++ contract(lh);
-++ }
-+ }
-+
-+ void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)
-+diff -burN android-openssl.orig/crypto/lhash/lhash.h android-openssl-lhash/crypto/lhash/lhash.h
-+--- android-openssl.orig/crypto/lhash/lhash.h 2013-02-11 10:26:04.000000000 -0500
-++++ android-openssl-lhash/crypto/lhash/lhash.h 2013-11-05 14:16:49.500027656 -0500
-+@@ -163,6 +163,7 @@
-+ unsigned long num_hash_comps;
-+
-+ int error;
-++ int iteration_state;
-+ } _LHASH; /* Do not use _LHASH directly, use LHASH_OF
-+ * and friends */
-+
-+diff -burN android-openssl.orig/crypto/objects/o_names.c android-openssl-lhash/crypto/objects/o_names.c
-+--- android-openssl.orig/crypto/objects/o_names.c 2013-02-11 10:26:04.000000000 -0500
-++++ android-openssl-lhash/crypto/objects/o_names.c 2013-11-05 14:16:49.500027656 -0500
-+@@ -350,13 +350,9 @@
-+
-+ void OBJ_NAME_cleanup(int type)
-+ {
-+- unsigned long down_load;
-+-
-+ if (names_lh == NULL) return;
-+
-+ free_type=type;
-+- down_load=lh_OBJ_NAME_down_load(names_lh);
-+- lh_OBJ_NAME_down_load(names_lh)=0;
-+
-+ lh_OBJ_NAME_doall(names_lh,LHASH_DOALL_FN(names_lh_free));
-+ if (type < 0)
-+@@ -366,7 +362,5 @@
-+ names_lh=NULL;
-+ name_funcs_stack = NULL;
-+ }
-+- else
-+- lh_OBJ_NAME_down_load(names_lh)=down_load;
-+ }
-+
-+diff -burN android-openssl.orig/crypto/objects/obj_dat.c android-openssl-lhash/crypto/objects/obj_dat.c
-+--- android-openssl.orig/crypto/objects/obj_dat.c 2013-02-11 10:26:04.000000000 -0500
-++++ android-openssl-lhash/crypto/objects/obj_dat.c 2013-11-05 14:16:49.500027656 -0500
-+@@ -227,7 +227,6 @@
-+ return ;
-+ }
-+ if (added == NULL) return;
-+- lh_ADDED_OBJ_down_load(added) = 0;
-+ lh_ADDED_OBJ_doall(added,LHASH_DOALL_FN(cleanup1)); /* zero counters */
-+ lh_ADDED_OBJ_doall(added,LHASH_DOALL_FN(cleanup2)); /* set counters */
-+ lh_ADDED_OBJ_doall(added,LHASH_DOALL_FN(cleanup3)); /* free objects */
-+diff -burN android-openssl.orig/include/openssl/lhash.h android-openssl-lhash/include/openssl/lhash.h
-+--- android-openssl.orig/include/openssl/lhash.h 2013-11-05 14:11:20.903223251 -0500
-++++ android-openssl-lhash/include/openssl/lhash.h 2013-11-05 14:16:49.500027656 -0500
-+@@ -163,6 +163,7 @@
-+ unsigned long num_hash_comps;
-+
-+ int error;
-++ int iteration_state;
-+ } _LHASH; /* Do not use _LHASH directly, use LHASH_OF
-+ * and friends */
-+
-+diff -burN android-openssl.orig/include/openssl/ssl.h android-openssl-lhash/include/openssl/ssl.h
-+--- android-openssl.orig/include/openssl/ssl.h 2013-11-05 14:11:21.013222124 -0500
-++++ android-openssl-lhash/include/openssl/ssl.h 2013-11-05 14:16:49.500027656 -0500
-+@@ -1681,10 +1681,10 @@
-+ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh)
-+
-+ /* SSL_enable_tls_channel_id either configures a TLS server to accept TLS client
-+- * IDs from clients, or configure a client to send TLS client IDs to server.
-++ * IDs from clients, or configures a client to send TLS client IDs to server.
-+ * Returns 1 on success. */
-+-#define SSL_enable_tls_channel_id(s) \
-+- SSL_ctrl(s,SSL_CTRL_CHANNEL_ID,0,NULL)
-++#define SSL_enable_tls_channel_id(ssl) \
-++ SSL_ctrl(ssl,SSL_CTRL_CHANNEL_ID,0,NULL)
-+ /* SSL_set1_tls_channel_id configures a TLS client to send a TLS Channel ID to
-+ * compatible servers. private_key must be a P-256 EVP_PKEY*. Returns 1 on
-+ * success. */
-+diff -burN android-openssl.orig/ssl/ssl.h android-openssl-lhash/ssl/ssl.h
-+--- android-openssl.orig/ssl/ssl.h 2013-11-05 14:11:18.363249269 -0500
-++++ android-openssl-lhash/ssl/ssl.h 2013-11-05 14:16:49.510027563 -0500
-+@@ -1681,10 +1681,10 @@
-+ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh)
-+
-+ /* SSL_enable_tls_channel_id either configures a TLS server to accept TLS client
-+- * IDs from clients, or configure a client to send TLS client IDs to server.
-++ * IDs from clients, or configures a client to send TLS client IDs to server.
-+ * Returns 1 on success. */
-+-#define SSL_enable_tls_channel_id(s) \
-+- SSL_ctrl(s,SSL_CTRL_CHANNEL_ID,0,NULL)
-++#define SSL_enable_tls_channel_id(ssl) \
-++ SSL_ctrl(ssl,SSL_CTRL_CHANNEL_ID,0,NULL)
-+ /* SSL_set1_tls_channel_id configures a TLS client to send a TLS Channel ID to
-+ * compatible servers. private_key must be a P-256 EVP_PKEY*. Returns 1 on
-+ * success. */
-+diff -burN android-openssl.orig/ssl/ssl_sess.c android-openssl-lhash/ssl/ssl_sess.c
-+--- android-openssl.orig/ssl/ssl_sess.c 2013-11-05 14:11:18.363249269 -0500
-++++ android-openssl-lhash/ssl/ssl_sess.c 2013-11-05 14:16:49.510027563 -0500
-+@@ -999,11 +999,8 @@
-+ if (tp.cache == NULL) return;
-+ tp.time=t;
-+ CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
-+- i=CHECKED_LHASH_OF(SSL_SESSION, tp.cache)->down_load;
-+- CHECKED_LHASH_OF(SSL_SESSION, tp.cache)->down_load=0;
-+ lh_SSL_SESSION_doall_arg(tp.cache, LHASH_DOALL_ARG_FN(timeout),
-+ TIMEOUT_PARAM, &tp);
-+- CHECKED_LHASH_OF(SSL_SESSION, tp.cache)->down_load=i;
-+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
-+ }
-+
« no previous file with comments | « patches.chromium/0005-reduce_client_hello_size.patch ('k') | patches.chromium/0007-chacha.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698