From: Bob Beck Date: Fri, 12 Sep 2025 15:18:45 +0000 (-0600) Subject: Const correct the various sk_find functions. X-Git-Tag: 4.0-PRE-CLANG-FORMAT-WEBKIT~443 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9a0f7dc9c1ae0566105beecd50e842732c8611a;p=thirdparty%2Fopenssl.git Const correct the various sk_find functions. Since we no longer mutate the stack when finding, let us make the stack pointers const. Reviewed-by: Paul Dale Reviewed-by: Matt Caswell Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/28532) --- diff --git a/crypto/stack/stack.c b/crypto/stack/stack.c index ecfaac9d6e6..bd85c82ede2 100644 --- a/crypto/stack/stack.c +++ b/crypto/stack/stack.c @@ -313,7 +313,7 @@ void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc) return internal_delete(st, loc); } -static int internal_find(OPENSSL_STACK *st, const void *data, +static int internal_find(const OPENSSL_STACK *st, const void *data, int ret_val_options, int *pnum_matched) { const void *r; @@ -378,17 +378,17 @@ static int internal_find(OPENSSL_STACK *st, const void *data, return r == NULL ? -1 : (int)((const void **)r - st->data); } -int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data) +int OPENSSL_sk_find(const OPENSSL_STACK *st, const void *data) { return internal_find(st, data, OSSL_BSEARCH_FIRST_VALUE_ON_MATCH, NULL); } -int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data) +int OPENSSL_sk_find_ex(const OPENSSL_STACK *st, const void *data) { return internal_find(st, data, OSSL_BSEARCH_VALUE_ON_NOMATCH, NULL); } -int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum) +int OPENSSL_sk_find_all(const OPENSSL_STACK *st, const void *data, int *pnum) { return internal_find(st, data, OSSL_BSEARCH_FIRST_VALUE_ON_MATCH, pnum); } diff --git a/doc/man3/DEFINE_STACK_OF.pod b/doc/man3/DEFINE_STACK_OF.pod index fe2b97a5d79..7d65af2af01 100644 --- a/doc/man3/DEFINE_STACK_OF.pod +++ b/doc/man3/DEFINE_STACK_OF.pod @@ -52,9 +52,9 @@ OPENSSL_sk_sort, OPENSSL_sk_unshift, OPENSSL_sk_value, OPENSSL_sk_zero void sk_TYPE_pop_free(STACK_OF(TYPE) *sk, sk_TYPE_freefunc freefunc); int sk_TYPE_insert(STACK_OF(TYPE) *sk, TYPE *ptr, int idx); TYPE *sk_TYPE_set(STACK_OF(TYPE) *sk, int idx, const TYPE *ptr); - int sk_TYPE_find(STACK_OF(TYPE) *sk, TYPE *ptr); - int sk_TYPE_find_ex(STACK_OF(TYPE) *sk, TYPE *ptr); - int sk_TYPE_find_all(STACK_OF(TYPE) *sk, TYPE *ptr, int *pnum); + int sk_TYPE_find(const STACK_OF(TYPE) *sk, TYPE *ptr); + int sk_TYPE_find_ex(const STACK_OF(TYPE) *sk, TYPE *ptr); + int sk_TYPE_find_all(const STACK_OF(TYPE) *sk, TYPE *ptr, int *pnum); void sk_TYPE_sort(const STACK_OF(TYPE) *sk); int sk_TYPE_is_sorted(const STACK_OF(TYPE) *sk); STACK_OF(TYPE) *sk_TYPE_dup(const STACK_OF(TYPE) *sk); diff --git a/include/openssl/safestack.h.in b/include/openssl/safestack.h.in index ed1d1827416..031029521ef 100644 --- a/include/openssl/safestack.h.in +++ b/include/openssl/safestack.h.in @@ -161,17 +161,18 @@ extern "C" { { \ return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ } \ - static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_find(const STACK_OF(t1) *sk, t2 *ptr) \ { \ - return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + return OPENSSL_sk_find((const OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(const STACK_OF(t1) *sk, t2 *ptr) \ { \ - return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + return OPENSSL_sk_find_ex((const OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + static ossl_unused ossl_inline int sk_##t1##_find_all(const STACK_OF(t1) *sk, t2 *ptr, \ + int *pnum) \ { \ - return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + return OPENSSL_sk_find_all((const OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ } \ static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ { \ diff --git a/include/openssl/stack.h b/include/openssl/stack.h index 419f56184b8..0b2e5c6957b 100644 --- a/include/openssl/stack.h +++ b/include/openssl/stack.h @@ -45,9 +45,9 @@ OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); -int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); -int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); -int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); +int OPENSSL_sk_find(const OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(const OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_all(const OPENSSL_STACK *st, const void *data, int *pnum); int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); void *OPENSSL_sk_shift(OPENSSL_STACK *st);