summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Mraz <tomas@openssl.org>2023-12-04 11:16:45 +0100
committerTomas Mraz <tomas@openssl.org>2024-01-04 14:51:48 +0100
commit98d6016afec4c0bc7bb8f33b5061beb8528cc74a (patch)
treec3ae8ee7574e1f36a161da74eb5e4b9f7285124f
parent8b9cf1bc2c3085b6e9493a057209ffd0bddf48a6 (diff)
Make OPENSSL_sk_push return only 0 or 1
Most of the callers do not actually check for the special -1 return condition because they do not pass NULL to it. It is also extremely improbable that any code depends on this -1 return value in this condition so it can be safely changed to 0 return. Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Ben Kaduk <kaduk@mit.edu> (Merged from https://github.com/openssl/openssl/pull/22930)
-rw-r--r--CHANGES.md5
-rw-r--r--crypto/stack/stack.c2
-rw-r--r--doc/man3/DEFINE_STACK_OF.pod4
3 files changed, 9 insertions, 2 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 43f874ff9c..625eacb6d4 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -41,6 +41,11 @@ OpenSSL 3.3
*Neil Horman*
+ * OPENSSL_sk_push() and sk_<TYPE>_push() functions now return 0 instead of -1
+ if called with a NULL stack argument.
+
+ *Tomáš Mráz*
+
* In `openssl speed`, changed the default hash function used with `hmac` from
`md5` to `sha256`.
diff --git a/crypto/stack/stack.c b/crypto/stack/stack.c
index 72e3087e89..05a37ed87d 100644
--- a/crypto/stack/stack.c
+++ b/crypto/stack/stack.c
@@ -397,7 +397,7 @@ int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum)
int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data)
{
if (st == NULL)
- return -1;
+ return 0;
return OPENSSL_sk_insert(st, data, st->num);
}
diff --git a/doc/man3/DEFINE_STACK_OF.pod b/doc/man3/DEFINE_STACK_OF.pod
index 06a0256bac..7b3c724af2 100644
--- a/doc/man3/DEFINE_STACK_OF.pod
+++ b/doc/man3/DEFINE_STACK_OF.pod
@@ -270,7 +270,6 @@ on error.
B<sk_I<TYPE>_insert>(), B<sk_I<TYPE>_push>() and B<sk_I<TYPE>_unshift>() return
the total number of elements in the stack and 0 if an error occurred.
-B<sk_I<TYPE>_push>() further returns -1 if I<sk> is NULL.
B<sk_I<TYPE>_set>() returns a pointer to the replacement element or NULL on
error.
@@ -297,6 +296,9 @@ and B<sk_I<TYPE>_find_all>() calls are read-only and do not sort the
stack. To avoid any performance implications this change introduces,
B<sk_I<TYPE>_sort>() should be called before these find operations.
+Before OpenSSL 3.3.0 B<sk_I<TYPE>_push>() returned -1 if I<sk> was NULL. It
+was changed to return 0 in this condition as for other errors.
+
=head1 COPYRIGHT
Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.