diff options
author | Pauli <paul.dale@oracle.com> | 2017-09-28 10:09:18 +1000 |
---|---|---|
committer | Pauli <paul.dale@oracle.com> | 2017-10-09 07:50:18 +1000 |
commit | 2e8b5d75afaff7c9b75917b750f997dc82336fac (patch) | |
tree | f30b5432cf98015569f3e284993b81c5d72ef976 /doc | |
parent | 24b0be11b061f36d30ccccdf9d34edf270be4c2f (diff) | |
download | openssl-2e8b5d75afaff7c9b75917b750f997dc82336fac.tar.gz |
Document that lhash isn't thread safe under any circumstances and
indicate the level of locking required for various operations.
Remove the lock and atomics from the lhash code. These we're not complete
or adequate.
Refer to #4418 and #4427 for details.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4429)
Diffstat (limited to 'doc')
-rw-r--r-- | doc/man3/OPENSSL_LH_COMPFUNC.pod | 9 | ||||
-rw-r--r-- | doc/man3/OPENSSL_LH_stats.pod | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/doc/man3/OPENSSL_LH_COMPFUNC.pod b/doc/man3/OPENSSL_LH_COMPFUNC.pod index 1e2e5d594f..06908a49fc 100644 --- a/doc/man3/OPENSSL_LH_COMPFUNC.pod +++ b/doc/man3/OPENSSL_LH_COMPFUNC.pod @@ -184,6 +184,13 @@ audit/verify and also opens the window of opportunity for stack corruption and other hard-to-find bugs. It also, apparently, violates ANSI-C. +The LHASH code is not thread safe. All updating operations must be +performed under a write lock. All retrieve operations should be performed +under a read lock, I<unless> accurate usage statistics are desired. +In which case, a write lock should be used for retrieve operations +as well. For output of the usage statistics, using the functions from +L<OPENSSL_LH_stats(3)>, a read lock suffices. + The LHASH code regards table entries as constant data. As such, it internally represents lh_insert()'d items with a "const void *" pointer type. This is why callbacks such as those used by lh_doall() @@ -229,7 +236,7 @@ type checking. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/OPENSSL_LH_stats.pod b/doc/man3/OPENSSL_LH_stats.pod index 49351f4dce..231485ad36 100644 --- a/doc/man3/OPENSSL_LH_stats.pod +++ b/doc/man3/OPENSSL_LH_stats.pod @@ -46,13 +46,19 @@ are the same as the above, except that the output goes to a B<BIO>. These functions do not return values. +=head1 NOTE + +These calls should be made under a read lock. Refer to +L<OPENSSL_LH_COMPFUNC(3)/NOTE> for more details about the locks required +when using the LHASH data structure. + =head1 SEE ALSO -L<bio(7)>, L<LHASH(3)> +L<bio(7)>, L<OPENSSL_LH_COMPFUNC(3)> =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy |