Coverage Report

Created: 2025-06-11 06:40

/src/boringssl/include/openssl/stack.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     https://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef OPENSSL_HEADER_STACK_H
16
#define OPENSSL_HEADER_STACK_H
17
18
#include <openssl/base.h>   // IWYU pragma: export
19
20
#if defined(__cplusplus)
21
extern "C" {
22
#endif
23
24
25
// A stack, in OpenSSL, is an array of pointers. They are the most commonly
26
// used collection object.
27
//
28
// This file defines macros for type-safe use of the stack functions. A stack
29
// type is named like |STACK_OF(FOO)| and is accessed with functions named
30
// like |sk_FOO_*|. Note the stack will typically contain /pointers/ to |FOO|.
31
//
32
// The |DECLARE_STACK_OF| macro makes |STACK_OF(FOO)| available, and
33
// |DEFINE_STACK_OF| makes the corresponding functions available.
34
35
36
// Defining stacks.
37
38
// STACK_OF expands to the stack type for |type|.
39
41.1k
#define STACK_OF(type) struct stack_st_##type
40
41
// DECLARE_STACK_OF declares the |STACK_OF(type)| type. It does not make the
42
// corresponding |sk_type_*| functions available. This macro should be used in
43
// files which only need the type.
44
#define DECLARE_STACK_OF(type) STACK_OF(type);
45
46
// DEFINE_NAMED_STACK_OF defines |STACK_OF(name)| to be a stack whose elements
47
// are |type| *. This macro makes the |sk_name_*| functions available.
48
//
49
// It is not necessary to use |DECLARE_STACK_OF| in files which use this macro.
50
#define DEFINE_NAMED_STACK_OF(name, type)                    \
51
  BORINGSSL_DEFINE_STACK_OF_IMPL(name, type *, const type *) \
52
  BORINGSSL_DEFINE_STACK_TRAITS(name, type, false)
53
54
// DEFINE_STACK_OF defines |STACK_OF(type)| to be a stack whose elements are
55
// |type| *. This macro makes the |sk_type_*| functions available.
56
//
57
// It is not necessary to use |DECLARE_STACK_OF| in files which use this macro.
58
#define DEFINE_STACK_OF(type) DEFINE_NAMED_STACK_OF(type, type)
59
60
// DEFINE_CONST_STACK_OF defines |STACK_OF(type)| to be a stack whose elements
61
// are const |type| *. This macro makes the |sk_type_*| functions available.
62
//
63
// It is not necessary to use |DECLARE_STACK_OF| in files which use this macro.
64
#define DEFINE_CONST_STACK_OF(type)                                \
65
  BORINGSSL_DEFINE_STACK_OF_IMPL(type, const type *, const type *) \
66
  BORINGSSL_DEFINE_STACK_TRAITS(type, const type, true)
67
68
69
// Using stacks.
70
//
71
// After the |DEFINE_STACK_OF| macro is used, the following functions are
72
// available.
73
74
#if 0  // Sample
75
76
// sk_SAMPLE_free_func is a callback to free an element in a stack.
77
typedef void (*sk_SAMPLE_free_func)(SAMPLE *);
78
79
// sk_SAMPLE_copy_func is a callback to copy an element in a stack. It should
80
// return the copy or NULL on error.
81
typedef SAMPLE *(*sk_SAMPLE_copy_func)(const SAMPLE *);
82
83
// sk_SAMPLE_cmp_func is a callback to compare |*a| to |*b|. It should return a
84
// value < 0, 0, or > 0 if |*a| is less than, equal to, or greater than |*b|,
85
// respectively.  Note the extra indirection - the function is given a pointer
86
// to a pointer to the element. This is the |qsort|/|bsearch| comparison
87
// function applied to an array of |SAMPLE*|.
88
typedef int (*sk_SAMPLE_cmp_func)(const SAMPLE *const *a,
89
                                  const SAMPLE *const *b);
90
91
// sk_SAMPLE_new creates a new, empty stack with the given comparison function,
92
// which may be NULL. It returns the new stack or NULL on allocation failure.
93
STACK_OF(SAMPLE) *sk_SAMPLE_new(sk_SAMPLE_cmp_func comp);
94
95
// sk_SAMPLE_new_null creates a new, empty stack. It returns the new stack or
96
// NULL on allocation failure.
97
STACK_OF(SAMPLE) *sk_SAMPLE_new_null(void);
98
99
// sk_SAMPLE_num returns the number of elements in |sk|. It is safe to cast this
100
// value to |int|. |sk| is guaranteed to have at most |INT_MAX| elements. If
101
// |sk| is NULL, it is treated as the empty list and this function returns zero.
102
size_t sk_SAMPLE_num(const STACK_OF(SAMPLE) *sk);
103
104
// sk_SAMPLE_zero resets |sk| to the empty state but does nothing to free the
105
// individual elements themselves.
106
void sk_SAMPLE_zero(STACK_OF(SAMPLE) *sk);
107
108
// sk_SAMPLE_value returns the |i|th pointer in |sk|, or NULL if |i| is out of
109
// range. If |sk| is NULL, it is treated as an empty list and the function
110
// returns NULL.
111
SAMPLE *sk_SAMPLE_value(const STACK_OF(SAMPLE) *sk, size_t i);
112
113
// sk_SAMPLE_set sets the |i|th pointer in |sk| to |p| and returns |p|. If |i|
114
// is out of range, it returns NULL.
115
SAMPLE *sk_SAMPLE_set(STACK_OF(SAMPLE) *sk, size_t i, SAMPLE *p);
116
117
// sk_SAMPLE_free frees |sk|, but does nothing to free the individual elements.
118
// Use |sk_SAMPLE_pop_free| to also free the elements.
119
void sk_SAMPLE_free(STACK_OF(SAMPLE) *sk);
120
121
// sk_SAMPLE_pop_free calls |free_func| on each element in |sk| and then
122
// frees the stack itself.
123
void sk_SAMPLE_pop_free(STACK_OF(SAMPLE) *sk, sk_SAMPLE_free_func free_func);
124
125
// sk_SAMPLE_insert inserts |p| into the stack at index |where|, moving existing
126
// elements if needed. It returns the length of the new stack, or zero on
127
// error.
128
size_t sk_SAMPLE_insert(STACK_OF(SAMPLE) *sk, SAMPLE *p, size_t where);
129
130
// sk_SAMPLE_delete removes the pointer at index |where|, moving other elements
131
// down if needed. It returns the removed pointer, or NULL if |where| is out of
132
// range.
133
SAMPLE *sk_SAMPLE_delete(STACK_OF(SAMPLE) *sk, size_t where);
134
135
// sk_SAMPLE_delete_ptr removes, at most, one instance of |p| from |sk| based on
136
// pointer equality. If an instance of |p| is found then |p| is returned,
137
// otherwise it returns NULL.
138
SAMPLE *sk_SAMPLE_delete_ptr(STACK_OF(SAMPLE) *sk, const SAMPLE *p);
139
140
// sk_SAMPLE_delete_if_func is the callback function for |sk_SAMPLE_delete_if|.
141
// It should return one to remove |p| and zero to keep it.
142
typedef int (*sk_SAMPLE_delete_if_func)(SAMPLE *p, void *data);
143
144
// sk_SAMPLE_delete_if calls |func| with each element of |sk| and removes the
145
// entries where |func| returned one. This function does not free or return
146
// removed pointers so, if |sk| owns its contents, |func| should release the
147
// pointers prior to returning one.
148
void sk_SAMPLE_delete_if(STACK_OF(SAMPLE) *sk, sk_SAMPLE_delete_if_func func,
149
                         void *data);
150
151
// sk_SAMPLE_find find the first value in |sk| equal to |p|. |sk|'s comparison
152
// function determines equality, or pointer equality if |sk| has no comparison
153
// function.
154
//
155
// If the stack is sorted (see |sk_SAMPLE_sort|), this function uses a binary
156
// search. Otherwise it performs a linear search. If it finds a matching
157
// element, it writes the index to |*out_index| (if |out_index| is not NULL) and
158
// returns one. Otherwise, it returns zero. If |sk| is NULL, it is treated as
159
// the empty list and the function returns zero.
160
//
161
// Note this differs from OpenSSL. The type signature is slightly different, and
162
// OpenSSL's version will implicitly sort |sk| if it has a comparison function
163
// defined.
164
int sk_SAMPLE_find(const STACK_OF(SAMPLE) *sk, size_t *out_index,
165
                   const SAMPLE *p);
166
167
// sk_SAMPLE_shift removes and returns the first element in |sk|, or NULL if
168
// |sk| is empty.
169
SAMPLE *sk_SAMPLE_shift(STACK_OF(SAMPLE) *sk);
170
171
// sk_SAMPLE_push appends |p| to |sk| and returns the length of the new stack,
172
// or 0 on allocation failure.
173
size_t sk_SAMPLE_push(STACK_OF(SAMPLE) *sk, SAMPLE *p);
174
175
// sk_SAMPLE_pop removes and returns the last element of |sk|, or NULL if |sk|
176
// is empty.
177
SAMPLE *sk_SAMPLE_pop(STACK_OF(SAMPLE) *sk);
178
179
// sk_SAMPLE_dup performs a shallow copy of a stack and returns the new stack,
180
// or NULL on error. Use |sk_SAMPLE_deep_copy| to also copy the elements.
181
STACK_OF(SAMPLE) *sk_SAMPLE_dup(const STACK_OF(SAMPLE) *sk);
182
183
// sk_SAMPLE_sort sorts the elements of |sk| into ascending order based on the
184
// comparison function. The stack maintains a "sorted" flag and sorting an
185
// already sorted stack is a no-op.
186
void sk_SAMPLE_sort(STACK_OF(SAMPLE) *sk);
187
188
// sk_SAMPLE_is_sorted returns one if |sk| is known to be sorted and zero
189
// otherwise.
190
int sk_SAMPLE_is_sorted(const STACK_OF(SAMPLE) *sk);
191
192
// sk_SAMPLE_set_cmp_func sets the comparison function to be used by |sk| and
193
// returns the previous one.
194
sk_SAMPLE_cmp_func sk_SAMPLE_set_cmp_func(STACK_OF(SAMPLE) *sk,
195
                                          sk_SAMPLE_cmp_func comp);
196
197
// sk_SAMPLE_deep_copy performs a copy of |sk| and of each of the non-NULL
198
// elements in |sk| by using |copy_func|. If an error occurs, it calls
199
// |free_func| to free any copies already made and returns NULL.
200
STACK_OF(SAMPLE) *sk_SAMPLE_deep_copy(const STACK_OF(SAMPLE) *sk,
201
                                      sk_SAMPLE_copy_func copy_func,
202
                                      sk_SAMPLE_free_func free_func);
203
204
#endif  // Sample
205
206
207
// Private functions.
208
//
209
// The |sk_*| functions generated above are implemented internally using the
210
// type-erased functions below. Callers should use the typed wrappers instead.
211
// When using the type-erased functions, callers are responsible for ensuring
212
// the underlying types are correct. Casting pointers to the wrong types will
213
// result in memory errors.
214
215
// OPENSSL_sk_free_func is a function that frees an element in a stack. Note its
216
// actual type is void (*)(T *) for some T. Low-level |sk_*| functions will be
217
// passed a type-specific wrapper to call it correctly.
218
typedef void (*OPENSSL_sk_free_func)(void *ptr);
219
220
// OPENSSL_sk_copy_func is a function that copies an element in a stack. Note
221
// its actual type is T *(*)(const T *) for some T. Low-level |sk_*| functions
222
// will be passed a type-specific wrapper to call it correctly.
223
typedef void *(*OPENSSL_sk_copy_func)(const void *ptr);
224
225
// OPENSSL_sk_cmp_func is a comparison function that returns a value < 0, 0 or >
226
// 0 if |*a| is less than, equal to or greater than |*b|, respectively.  Note
227
// the extra indirection - the function is given a pointer to a pointer to the
228
// element. This differs from the usual qsort/bsearch comparison function.
229
//
230
// Note its actual type is |int (*)(const T *const *a, const T *const *b)|.
231
// Low-level |sk_*| functions will be passed a type-specific wrapper to call it
232
// correctly.
233
typedef int (*OPENSSL_sk_cmp_func)(const void *const *a, const void *const *b);
234
235
// OPENSSL_sk_delete_if_func is the generic version of
236
// |sk_SAMPLE_delete_if_func|.
237
typedef int (*OPENSSL_sk_delete_if_func)(void *obj, void *data);
238
239
// The following function types call the above type-erased signatures with the
240
// true types.
241
typedef void (*OPENSSL_sk_call_free_func)(OPENSSL_sk_free_func, void *);
242
typedef void *(*OPENSSL_sk_call_copy_func)(OPENSSL_sk_copy_func, const void *);
243
typedef int (*OPENSSL_sk_call_cmp_func)(OPENSSL_sk_cmp_func, const void *,
244
                                        const void *);
245
typedef int (*OPENSSL_sk_call_delete_if_func)(OPENSSL_sk_delete_if_func, void *,
246
                                              void *);
247
248
// An OPENSSL_STACK contains an array of pointers. It is not designed to be used
249
// directly, rather the wrapper macros should be used.
250
typedef struct stack_st OPENSSL_STACK;
251
252
// The following are raw stack functions. They implement the corresponding typed
253
// |sk_SAMPLE_*| functions generated by |DEFINE_STACK_OF|. Callers shouldn't be
254
// using them. Rather, callers should use the typed functions.
255
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_cmp_func comp);
256
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_new_null(void);
257
OPENSSL_EXPORT size_t OPENSSL_sk_num(const OPENSSL_STACK *sk);
258
OPENSSL_EXPORT void OPENSSL_sk_zero(OPENSSL_STACK *sk);
259
OPENSSL_EXPORT void *OPENSSL_sk_value(const OPENSSL_STACK *sk, size_t i);
260
OPENSSL_EXPORT void *OPENSSL_sk_set(OPENSSL_STACK *sk, size_t i, void *p);
261
OPENSSL_EXPORT void OPENSSL_sk_free(OPENSSL_STACK *sk);
262
OPENSSL_EXPORT void OPENSSL_sk_pop_free_ex(
263
    OPENSSL_STACK *sk, OPENSSL_sk_call_free_func call_free_func,
264
    OPENSSL_sk_free_func free_func);
265
OPENSSL_EXPORT size_t OPENSSL_sk_insert(OPENSSL_STACK *sk, void *p,
266
                                        size_t where);
267
OPENSSL_EXPORT void *OPENSSL_sk_delete(OPENSSL_STACK *sk, size_t where);
268
OPENSSL_EXPORT void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *sk, const void *p);
269
OPENSSL_EXPORT void OPENSSL_sk_delete_if(
270
    OPENSSL_STACK *sk, OPENSSL_sk_call_delete_if_func call_func,
271
    OPENSSL_sk_delete_if_func func, void *data);
272
OPENSSL_EXPORT int OPENSSL_sk_find(const OPENSSL_STACK *sk, size_t *out_index,
273
                                   const void *p,
274
                                   OPENSSL_sk_call_cmp_func call_cmp_func);
275
OPENSSL_EXPORT void *OPENSSL_sk_shift(OPENSSL_STACK *sk);
276
OPENSSL_EXPORT size_t OPENSSL_sk_push(OPENSSL_STACK *sk, void *p);
277
OPENSSL_EXPORT void *OPENSSL_sk_pop(OPENSSL_STACK *sk);
278
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *sk);
279
OPENSSL_EXPORT void OPENSSL_sk_sort(OPENSSL_STACK *sk,
280
                                    OPENSSL_sk_call_cmp_func call_cmp_func);
281
OPENSSL_EXPORT int OPENSSL_sk_is_sorted(const OPENSSL_STACK *sk);
282
OPENSSL_EXPORT OPENSSL_sk_cmp_func
283
OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, OPENSSL_sk_cmp_func comp);
284
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_deep_copy(
285
    const OPENSSL_STACK *sk, OPENSSL_sk_call_copy_func call_copy_func,
286
    OPENSSL_sk_copy_func copy_func, OPENSSL_sk_call_free_func call_free_func,
287
    OPENSSL_sk_free_func free_func);
288
289
290
// Deprecated private functions (hidden).
291
//
292
// TODO(crbug.com/boringssl/499): Migrate callers to the typed wrappers, or at
293
// least the new names and remove the old ones.
294
//
295
// TODO(b/290792019, b/290785937): Ideally these would at least be inline
296
// functions, so we do not squat the symbols.
297
298
typedef OPENSSL_STACK _STACK;
299
300
// The following functions call the corresponding |OPENSSL_sk_*| function.
301
OPENSSL_EXPORT OPENSSL_DEPRECATED OPENSSL_STACK *sk_new_null(void);
302
OPENSSL_EXPORT OPENSSL_DEPRECATED size_t sk_num(const OPENSSL_STACK *sk);
303
OPENSSL_EXPORT OPENSSL_DEPRECATED void *sk_value(const OPENSSL_STACK *sk,
304
                                                 size_t i);
305
OPENSSL_EXPORT OPENSSL_DEPRECATED void sk_free(OPENSSL_STACK *sk);
306
OPENSSL_EXPORT OPENSSL_DEPRECATED size_t sk_push(OPENSSL_STACK *sk, void *p);
307
OPENSSL_EXPORT OPENSSL_DEPRECATED void *sk_pop(OPENSSL_STACK *sk);
308
309
// sk_pop_free_ex calls |OPENSSL_sk_pop_free_ex|.
310
//
311
// TODO(b/291994116): Remove this.
312
OPENSSL_EXPORT OPENSSL_DEPRECATED void sk_pop_free_ex(
313
    OPENSSL_STACK *sk, OPENSSL_sk_call_free_func call_free_func,
314
    OPENSSL_sk_free_func free_func);
315
316
// sk_pop_free behaves like |OPENSSL_sk_pop_free_ex| but performs an invalid
317
// function pointer cast. It exists because some existing callers called
318
// |sk_pop_free| directly.
319
//
320
// TODO(davidben): Migrate callers to bssl::UniquePtr and remove this.
321
OPENSSL_EXPORT OPENSSL_DEPRECATED void sk_pop_free(
322
    OPENSSL_STACK *sk, OPENSSL_sk_free_func free_func);
323
324
325
#if !defined(BORINGSSL_NO_CXX)
326
extern "C++" {
327
BSSL_NAMESPACE_BEGIN
328
namespace internal {
329
template <typename T>
330
struct StackTraits {};
331
}
332
BSSL_NAMESPACE_END
333
}
334
335
#define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const) \
336
  extern "C++" {                                            \
337
  BSSL_NAMESPACE_BEGIN                                      \
338
  namespace internal {                                      \
339
  template <>                                               \
340
  struct StackTraits<STACK_OF(name)> {                      \
341
    static constexpr bool kIsStack = true;                  \
342
    using Type = type;                                      \
343
    static constexpr bool kIsConst = is_const;              \
344
  };                                                        \
345
  }                                                         \
346
  BSSL_NAMESPACE_END                                        \
347
  }
348
349
#else
350
#define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const)
351
#endif
352
353
#define BORINGSSL_DEFINE_STACK_OF_IMPL(name, ptrtype, constptrtype)            \
354
  /* We disable MSVC C4191 in this macro, which warns when pointers are cast   \
355
   * to the wrong type. While the cast itself is valid, it is often a bug      \
356
   * because calling it through the cast is UB. However, we never actually     \
357
   * call functions as |OPENSSL_sk_cmp_func|. The type is just a type-erased   \
358
   * function pointer. (C does not guarantee function pointers fit in          \
359
   * |void*|, and GCC will warn on this.) Thus we just disable the false       \
360
   * positive warning. */                                                      \
361
  OPENSSL_MSVC_PRAGMA(warning(push))                                           \
362
  OPENSSL_MSVC_PRAGMA(warning(disable : 4191))                                 \
363
  OPENSSL_GNUC_CLANG_PRAGMA("GCC diagnostic push")                             \
364
  OPENSSL_CLANG_PRAGMA(                                                        \
365
      "clang diagnostic ignored \"-Wunknown-warning-option\"")                 \
366
  OPENSSL_CLANG_PRAGMA(                                                        \
367
      "clang diagnostic ignored \"-Wcast-function-type-strict\"")              \
368
  /* We also disable -Wcast-qual. As part of this C-based type erasure setup,  \
369
   * the wrapper macros need to cast away const in places. In C++, const_cast  \
370
   * suppresses the warning, but it seemingly cannot be suppressed in C. */    \
371
  OPENSSL_GNUC_CLANG_PRAGMA("GCC diagnostic ignored \"-Wcast-qual\"")          \
372
                                                                               \
373
  DECLARE_STACK_OF(name)                                                       \
374
                                                                               \
375
  typedef void (*sk_##name##_free_func)(ptrtype);                              \
376
  typedef ptrtype (*sk_##name##_copy_func)(constptrtype);                      \
377
  typedef int (*sk_##name##_cmp_func)(constptrtype const *,                    \
378
                                      constptrtype const *);                   \
379
  typedef int (*sk_##name##_delete_if_func)(ptrtype, void *);                  \
380
                                                                               \
381
  OPENSSL_INLINE void sk_##name##_call_free_func(                              \
382
40.8k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
383
40.8k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
384
40.8k
  }                                                                            \
Unexecuted instantiation: sk_void_call_free_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_free_func
Unexecuted instantiation: sk_BIO_call_free_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_free_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_free_func
Unexecuted instantiation: sk_ASN1_TYPE_call_free_func
Unexecuted instantiation: sk_CONF_VALUE_call_free_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_free_func
sk_X509_call_free_func
Line
Count
Source
382
74
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
383
74
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
384
74
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_call_free_func
Unexecuted instantiation: sk_X509_CRL_call_free_func
Unexecuted instantiation: sk_X509_REVOKED_call_free_func
sk_X509_NAME_ENTRY_call_free_func
Line
Count
Source
382
20.3k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
383
20.3k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
384
20.3k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_call_free_func
Unexecuted instantiation: sk_X509_EXTENSION_call_free_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_free_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_free_func
Unexecuted instantiation: sk_DIST_POINT_call_free_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_free_func
Unexecuted instantiation: sk_POLICYINFO_call_free_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_free_func
Unexecuted instantiation: sk_X509_ALGOR_call_free_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_free_func
Unexecuted instantiation: sk_X509_OBJECT_call_free_func
Unexecuted instantiation: sk_X509_INFO_call_free_func
Unexecuted instantiation: sk_SSL_CIPHER_call_free_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_free_func
Unexecuted instantiation: sk_SSL_COMP_call_free_func
Unexecuted instantiation: sk_ASN1_VALUE_call_free_func
Unexecuted instantiation: sk_X509_LOOKUP_call_free_func
sk_STACK_OF_X509_NAME_ENTRY_call_free_func(void (*)(void*), void*)
Line
Count
Source
382
20.3k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
383
20.3k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
384
20.3k
  }                                                                            \
Unexecuted instantiation: sk_BY_DIR_ENTRY_call_free_func(void (*)(void*), void*)
Unexecuted instantiation: sk_BY_DIR_HASH_call_free_func(void (*)(void*), void*)
Unexecuted instantiation: sk_X509_POLICY_NODE_call_free_func(void (*)(void*), void*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_call_free_func(void (*)(void*), void*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_call_free_func(void (*)(void*), void*)
385
                                                                               \
386
  OPENSSL_INLINE void *sk_##name##_call_copy_func(                             \
387
0
      OPENSSL_sk_copy_func copy_func, const void *ptr) {                       \
388
0
    return (void *)((sk_##name##_copy_func)copy_func)((constptrtype)ptr);      \
389
0
  }                                                                            \
Unexecuted instantiation: sk_void_call_copy_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_copy_func
Unexecuted instantiation: sk_BIO_call_copy_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_copy_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_copy_func
Unexecuted instantiation: sk_ASN1_TYPE_call_copy_func
Unexecuted instantiation: sk_CONF_VALUE_call_copy_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_copy_func
Unexecuted instantiation: sk_X509_call_copy_func
Unexecuted instantiation: sk_GENERAL_NAME_call_copy_func
Unexecuted instantiation: sk_X509_CRL_call_copy_func
Unexecuted instantiation: sk_X509_REVOKED_call_copy_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_copy_func
Unexecuted instantiation: sk_X509_NAME_call_copy_func
Unexecuted instantiation: sk_X509_EXTENSION_call_copy_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_copy_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_copy_func
Unexecuted instantiation: sk_DIST_POINT_call_copy_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_copy_func
Unexecuted instantiation: sk_POLICYINFO_call_copy_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_copy_func
Unexecuted instantiation: sk_X509_ALGOR_call_copy_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_copy_func
Unexecuted instantiation: sk_X509_OBJECT_call_copy_func
Unexecuted instantiation: sk_X509_INFO_call_copy_func
Unexecuted instantiation: sk_SSL_CIPHER_call_copy_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_copy_func
Unexecuted instantiation: sk_SSL_COMP_call_copy_func
Unexecuted instantiation: sk_ASN1_VALUE_call_copy_func
Unexecuted instantiation: sk_X509_LOOKUP_call_copy_func
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_call_copy_func(void* (*)(void const*), void const*)
Unexecuted instantiation: sk_BY_DIR_HASH_call_copy_func(void* (*)(void const*), void const*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_call_copy_func(void* (*)(void const*), void const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_call_copy_func(void* (*)(void const*), void const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_call_copy_func(void* (*)(void const*), void const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_call_copy_func(void* (*)(void const*), void const*)
390
                                                                               \
391
  OPENSSL_INLINE int sk_##name##_call_cmp_func(OPENSSL_sk_cmp_func cmp_func,   \
392
0
                                               const void *a, const void *b) { \
393
0
    constptrtype a_ptr = (constptrtype)a;                                      \
394
0
    constptrtype b_ptr = (constptrtype)b;                                      \
395
0
    /* |cmp_func| expects an extra layer of pointers to match qsort. */        \
396
0
    return ((sk_##name##_cmp_func)cmp_func)(&a_ptr, &b_ptr);                   \
397
0
  }                                                                            \
Unexecuted instantiation: sk_void_call_cmp_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_cmp_func
Unexecuted instantiation: sk_BIO_call_cmp_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_cmp_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_cmp_func
Unexecuted instantiation: sk_ASN1_TYPE_call_cmp_func
Unexecuted instantiation: sk_CONF_VALUE_call_cmp_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_cmp_func
Unexecuted instantiation: sk_X509_call_cmp_func
Unexecuted instantiation: sk_GENERAL_NAME_call_cmp_func
Unexecuted instantiation: sk_X509_CRL_call_cmp_func
Unexecuted instantiation: sk_X509_REVOKED_call_cmp_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_cmp_func
Unexecuted instantiation: sk_X509_NAME_call_cmp_func
Unexecuted instantiation: sk_X509_EXTENSION_call_cmp_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_cmp_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_cmp_func
Unexecuted instantiation: sk_DIST_POINT_call_cmp_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_cmp_func
Unexecuted instantiation: sk_POLICYINFO_call_cmp_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_cmp_func
Unexecuted instantiation: sk_X509_ALGOR_call_cmp_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_cmp_func
Unexecuted instantiation: sk_X509_OBJECT_call_cmp_func
Unexecuted instantiation: sk_X509_INFO_call_cmp_func
Unexecuted instantiation: sk_SSL_CIPHER_call_cmp_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_cmp_func
Unexecuted instantiation: sk_SSL_COMP_call_cmp_func
Unexecuted instantiation: sk_ASN1_VALUE_call_cmp_func
Unexecuted instantiation: sk_X509_LOOKUP_call_cmp_func
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_call_cmp_func(int (*)(void const* const*, void const* const*), void const*, void const*)
Unexecuted instantiation: sk_BY_DIR_HASH_call_cmp_func(int (*)(void const* const*, void const* const*), void const*, void const*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_call_cmp_func(int (*)(void const* const*, void const* const*), void const*, void const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_call_cmp_func(int (*)(void const* const*, void const* const*), void const*, void const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_call_cmp_func(int (*)(void const* const*, void const* const*), void const*, void const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_call_cmp_func(int (*)(void const* const*, void const* const*), void const*, void const*)
398
                                                                               \
399
  OPENSSL_INLINE int sk_##name##_call_delete_if_func(                          \
400
0
      OPENSSL_sk_delete_if_func func, void *obj, void *data) {                 \
401
0
    return ((sk_##name##_delete_if_func)func)((ptrtype)obj, data);             \
402
0
  }                                                                            \
Unexecuted instantiation: sk_void_call_delete_if_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_delete_if_func
Unexecuted instantiation: sk_BIO_call_delete_if_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_delete_if_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_delete_if_func
Unexecuted instantiation: sk_ASN1_TYPE_call_delete_if_func
Unexecuted instantiation: sk_CONF_VALUE_call_delete_if_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_delete_if_func
Unexecuted instantiation: sk_X509_call_delete_if_func
Unexecuted instantiation: sk_GENERAL_NAME_call_delete_if_func
Unexecuted instantiation: sk_X509_CRL_call_delete_if_func
Unexecuted instantiation: sk_X509_REVOKED_call_delete_if_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_delete_if_func
Unexecuted instantiation: sk_X509_NAME_call_delete_if_func
Unexecuted instantiation: sk_X509_EXTENSION_call_delete_if_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_delete_if_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_delete_if_func
Unexecuted instantiation: sk_DIST_POINT_call_delete_if_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_delete_if_func
Unexecuted instantiation: sk_POLICYINFO_call_delete_if_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_delete_if_func
Unexecuted instantiation: sk_X509_ALGOR_call_delete_if_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_delete_if_func
Unexecuted instantiation: sk_X509_OBJECT_call_delete_if_func
Unexecuted instantiation: sk_X509_INFO_call_delete_if_func
Unexecuted instantiation: sk_SSL_CIPHER_call_delete_if_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_delete_if_func
Unexecuted instantiation: sk_SSL_COMP_call_delete_if_func
Unexecuted instantiation: sk_ASN1_VALUE_call_delete_if_func
Unexecuted instantiation: sk_X509_LOOKUP_call_delete_if_func
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_call_delete_if_func(int (*)(void*, void*), void*, void*)
Unexecuted instantiation: sk_BY_DIR_HASH_call_delete_if_func(int (*)(void*, void*), void*, void*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_call_delete_if_func(int (*)(void*, void*), void*, void*)
Unexecuted instantiation: sk_X509_POLICY_NODE_call_delete_if_func(int (*)(void*, void*), void*, void*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_call_delete_if_func(int (*)(void*, void*), void*, void*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_call_delete_if_func(int (*)(void*, void*), void*, void*)
403
                                                                               \
404
2
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new(sk_##name##_cmp_func comp) {  \
405
2
    return (STACK_OF(name) *)OPENSSL_sk_new((OPENSSL_sk_cmp_func)comp);        \
406
2
  }                                                                            \
Unexecuted instantiation: sk_void_new
Unexecuted instantiation: sk_OPENSSL_STRING_new
Unexecuted instantiation: sk_BIO_new
Unexecuted instantiation: sk_ASN1_INTEGER_new
Unexecuted instantiation: sk_ASN1_OBJECT_new
Unexecuted instantiation: sk_ASN1_TYPE_new
Unexecuted instantiation: sk_CONF_VALUE_new
Unexecuted instantiation: sk_CRYPTO_BUFFER_new
Unexecuted instantiation: sk_X509_new
Unexecuted instantiation: sk_GENERAL_NAME_new
Unexecuted instantiation: sk_X509_CRL_new
Unexecuted instantiation: sk_X509_REVOKED_new
Unexecuted instantiation: sk_X509_NAME_ENTRY_new
Unexecuted instantiation: sk_X509_NAME_new
Unexecuted instantiation: sk_X509_EXTENSION_new
Unexecuted instantiation: sk_GENERAL_SUBTREE_new
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_new
Unexecuted instantiation: sk_DIST_POINT_new
Unexecuted instantiation: sk_POLICYQUALINFO_new
Unexecuted instantiation: sk_POLICYINFO_new
Unexecuted instantiation: sk_POLICY_MAPPING_new
Unexecuted instantiation: sk_X509_ALGOR_new
Unexecuted instantiation: sk_X509_ATTRIBUTE_new
sk_X509_OBJECT_new
Line
Count
Source
404
2
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new(sk_##name##_cmp_func comp) {  \
405
2
    return (STACK_OF(name) *)OPENSSL_sk_new((OPENSSL_sk_cmp_func)comp);        \
406
2
  }                                                                            \
Unexecuted instantiation: sk_X509_INFO_new
Unexecuted instantiation: sk_SSL_CIPHER_new
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_new
Unexecuted instantiation: sk_SSL_COMP_new
Unexecuted instantiation: sk_ASN1_VALUE_new
Unexecuted instantiation: sk_X509_LOOKUP_new
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_new(int (*)(stack_st_X509_NAME_ENTRY const* const*, stack_st_X509_NAME_ENTRY const* const*))
Unexecuted instantiation: sk_BY_DIR_HASH_new(int (*)(lookup_dir_hashes_st const* const*, lookup_dir_hashes_st const* const*))
Unexecuted instantiation: sk_BY_DIR_ENTRY_new(int (*)(lookup_dir_entry_st const* const*, lookup_dir_entry_st const* const*))
Unexecuted instantiation: sk_X509_POLICY_NODE_new(int (*)(x509_policy_node_st const* const*, x509_policy_node_st const* const*))
Unexecuted instantiation: sk_X509_POLICY_LEVEL_new(int (*)(x509_policy_level_st const* const*, x509_policy_level_st const* const*))
Unexecuted instantiation: sk_X509V3_EXT_METHOD_new(int (*)(v3_ext_method const* const*, v3_ext_method const* const*))
407
                                                                               \
408
39.5k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
39.5k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
39.5k
  }                                                                            \
Unexecuted instantiation: sk_void_new_null
Unexecuted instantiation: sk_OPENSSL_STRING_new_null
Unexecuted instantiation: sk_BIO_new_null
Unexecuted instantiation: sk_ASN1_INTEGER_new_null
Unexecuted instantiation: sk_ASN1_OBJECT_new_null
Unexecuted instantiation: sk_ASN1_TYPE_new_null
Unexecuted instantiation: sk_CONF_VALUE_new_null
sk_CRYPTO_BUFFER_new_null
Line
Count
Source
408
1.99k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
1.99k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
1.99k
  }                                                                            \
sk_X509_new_null
Line
Count
Source
408
3.81k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
3.81k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
3.81k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_new_null
Unexecuted instantiation: sk_X509_CRL_new_null
Unexecuted instantiation: sk_X509_REVOKED_new_null
sk_X509_NAME_ENTRY_new_null
Line
Count
Source
408
15.8k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
15.8k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
15.8k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_new_null
Unexecuted instantiation: sk_X509_EXTENSION_new_null
Unexecuted instantiation: sk_GENERAL_SUBTREE_new_null
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_new_null
Unexecuted instantiation: sk_DIST_POINT_new_null
Unexecuted instantiation: sk_POLICYQUALINFO_new_null
Unexecuted instantiation: sk_POLICYINFO_new_null
Unexecuted instantiation: sk_POLICY_MAPPING_new_null
Unexecuted instantiation: sk_X509_ALGOR_new_null
Unexecuted instantiation: sk_X509_ATTRIBUTE_new_null
Unexecuted instantiation: sk_X509_OBJECT_new_null
Unexecuted instantiation: sk_X509_INFO_new_null
sk_SSL_CIPHER_new_null
Line
Count
Source
408
2
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
2
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
2
  }                                                                            \
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_new_null
Unexecuted instantiation: sk_SSL_COMP_new_null
sk_ASN1_VALUE_new_null
Line
Count
Source
408
15.3k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
15.3k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
15.3k
  }                                                                            \
sk_X509_LOOKUP_new_null
Line
Count
Source
408
2
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
2
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
2
  }                                                                            \
sk_STACK_OF_X509_NAME_ENTRY_new_null()
Line
Count
Source
408
2.46k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
409
2.46k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
410
2.46k
  }                                                                            \
Unexecuted instantiation: sk_BY_DIR_ENTRY_new_null()
Unexecuted instantiation: sk_BY_DIR_HASH_new_null()
Unexecuted instantiation: sk_X509_POLICY_LEVEL_new_null()
Unexecuted instantiation: sk_X509_POLICY_NODE_new_null()
Unexecuted instantiation: sk_X509V3_EXT_METHOD_new_null()
411
                                                                               \
412
167k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
413
167k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
414
167k
  }                                                                            \
Unexecuted instantiation: sk_void_num
Unexecuted instantiation: sk_OPENSSL_STRING_num
Unexecuted instantiation: sk_BIO_num
Unexecuted instantiation: sk_ASN1_INTEGER_num
Unexecuted instantiation: sk_ASN1_OBJECT_num
Unexecuted instantiation: sk_ASN1_TYPE_num
Unexecuted instantiation: sk_CONF_VALUE_num
sk_CRYPTO_BUFFER_num
Line
Count
Source
412
2.98k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
413
2.98k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
414
2.98k
  }                                                                            \
Unexecuted instantiation: sk_X509_num
Unexecuted instantiation: sk_GENERAL_NAME_num
Unexecuted instantiation: sk_X509_CRL_num
Unexecuted instantiation: sk_X509_REVOKED_num
sk_X509_NAME_ENTRY_num
Line
Count
Source
412
36.5k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
413
36.5k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
414
36.5k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_num
Unexecuted instantiation: sk_X509_EXTENSION_num
Unexecuted instantiation: sk_GENERAL_SUBTREE_num
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_num
Unexecuted instantiation: sk_DIST_POINT_num
Unexecuted instantiation: sk_POLICYQUALINFO_num
Unexecuted instantiation: sk_POLICYINFO_num
Unexecuted instantiation: sk_POLICY_MAPPING_num
Unexecuted instantiation: sk_X509_ALGOR_num
Unexecuted instantiation: sk_X509_ATTRIBUTE_num
Unexecuted instantiation: sk_X509_OBJECT_num
Unexecuted instantiation: sk_X509_INFO_num
sk_SSL_CIPHER_num
Line
Count
Source
412
4
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
413
4
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
414
4
  }                                                                            \
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_num
Unexecuted instantiation: sk_SSL_COMP_num
sk_ASN1_VALUE_num
Line
Count
Source
412
114k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
413
114k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
414
114k
  }                                                                            \
Unexecuted instantiation: sk_X509_LOOKUP_num
sk_STACK_OF_X509_NAME_ENTRY_num(stack_st_STACK_OF_X509_NAME_ENTRY const*)
Line
Count
Source
412
13.6k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
413
13.6k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
414
13.6k
  }                                                                            \
Unexecuted instantiation: sk_BY_DIR_ENTRY_num(stack_st_BY_DIR_ENTRY const*)
Unexecuted instantiation: sk_BY_DIR_HASH_num(stack_st_BY_DIR_HASH const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_num(stack_st_X509_POLICY_NODE const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_num(stack_st_X509_POLICY_LEVEL const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_num(stack_st_X509V3_EXT_METHOD const*)
415
                                                                               \
416
0
  OPENSSL_INLINE void sk_##name##_zero(STACK_OF(name) *sk) {                   \
417
0
    OPENSSL_sk_zero((OPENSSL_STACK *)sk);                                      \
418
0
  }                                                                            \
Unexecuted instantiation: sk_void_zero
Unexecuted instantiation: sk_OPENSSL_STRING_zero
Unexecuted instantiation: sk_BIO_zero
Unexecuted instantiation: sk_ASN1_INTEGER_zero
Unexecuted instantiation: sk_ASN1_OBJECT_zero
Unexecuted instantiation: sk_ASN1_TYPE_zero
Unexecuted instantiation: sk_CONF_VALUE_zero
Unexecuted instantiation: sk_CRYPTO_BUFFER_zero
Unexecuted instantiation: sk_X509_zero
Unexecuted instantiation: sk_GENERAL_NAME_zero
Unexecuted instantiation: sk_X509_CRL_zero
Unexecuted instantiation: sk_X509_REVOKED_zero
Unexecuted instantiation: sk_X509_NAME_ENTRY_zero
Unexecuted instantiation: sk_X509_NAME_zero
Unexecuted instantiation: sk_X509_EXTENSION_zero
Unexecuted instantiation: sk_GENERAL_SUBTREE_zero
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_zero
Unexecuted instantiation: sk_DIST_POINT_zero
Unexecuted instantiation: sk_POLICYQUALINFO_zero
Unexecuted instantiation: sk_POLICYINFO_zero
Unexecuted instantiation: sk_POLICY_MAPPING_zero
Unexecuted instantiation: sk_X509_ALGOR_zero
Unexecuted instantiation: sk_X509_ATTRIBUTE_zero
Unexecuted instantiation: sk_X509_OBJECT_zero
Unexecuted instantiation: sk_X509_INFO_zero
Unexecuted instantiation: sk_SSL_CIPHER_zero
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_zero
Unexecuted instantiation: sk_SSL_COMP_zero
Unexecuted instantiation: sk_ASN1_VALUE_zero
Unexecuted instantiation: sk_X509_LOOKUP_zero
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_zero(stack_st_STACK_OF_X509_NAME_ENTRY*)
Unexecuted instantiation: sk_BY_DIR_HASH_zero(stack_st_BY_DIR_HASH*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_zero(stack_st_BY_DIR_ENTRY*)
Unexecuted instantiation: sk_X509_POLICY_NODE_zero(stack_st_X509_POLICY_NODE*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_zero(stack_st_X509_POLICY_LEVEL*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_zero(stack_st_X509V3_EXT_METHOD*)
419
                                                                               \
420
  OPENSSL_INLINE ptrtype sk_##name##_value(const STACK_OF(name) *sk,           \
421
93.6k
                                           size_t i) {                         \
422
93.6k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
423
93.6k
  }                                                                            \
Unexecuted instantiation: sk_void_value
Unexecuted instantiation: sk_OPENSSL_STRING_value
Unexecuted instantiation: sk_BIO_value
Unexecuted instantiation: sk_ASN1_INTEGER_value
Unexecuted instantiation: sk_ASN1_OBJECT_value
Unexecuted instantiation: sk_ASN1_TYPE_value
Unexecuted instantiation: sk_CONF_VALUE_value
sk_CRYPTO_BUFFER_value
Line
Count
Source
421
39
                                           size_t i) {                         \
422
39
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
423
39
  }                                                                            \
Unexecuted instantiation: sk_X509_value
Unexecuted instantiation: sk_GENERAL_NAME_value
Unexecuted instantiation: sk_X509_CRL_value
Unexecuted instantiation: sk_X509_REVOKED_value
sk_X509_NAME_ENTRY_value
Line
Count
Source
421
20.3k
                                           size_t i) {                         \
422
20.3k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
423
20.3k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_value
Unexecuted instantiation: sk_X509_EXTENSION_value
Unexecuted instantiation: sk_GENERAL_SUBTREE_value
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_value
Unexecuted instantiation: sk_DIST_POINT_value
Unexecuted instantiation: sk_POLICYQUALINFO_value
Unexecuted instantiation: sk_POLICYINFO_value
Unexecuted instantiation: sk_POLICY_MAPPING_value
Unexecuted instantiation: sk_X509_ALGOR_value
Unexecuted instantiation: sk_X509_ATTRIBUTE_value
Unexecuted instantiation: sk_X509_OBJECT_value
Unexecuted instantiation: sk_X509_INFO_value
Unexecuted instantiation: sk_SSL_CIPHER_value
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_value
Unexecuted instantiation: sk_SSL_COMP_value
sk_ASN1_VALUE_value
Line
Count
Source
421
62.0k
                                           size_t i) {                         \
422
62.0k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
423
62.0k
  }                                                                            \
Unexecuted instantiation: sk_X509_LOOKUP_value
sk_STACK_OF_X509_NAME_ENTRY_value(stack_st_STACK_OF_X509_NAME_ENTRY const*, unsigned long)
Line
Count
Source
421
11.1k
                                           size_t i) {                         \
422
11.1k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
423
11.1k
  }                                                                            \
Unexecuted instantiation: sk_BY_DIR_ENTRY_value(stack_st_BY_DIR_ENTRY const*, unsigned long)
Unexecuted instantiation: sk_BY_DIR_HASH_value(stack_st_BY_DIR_HASH const*, unsigned long)
Unexecuted instantiation: sk_X509_POLICY_NODE_value(stack_st_X509_POLICY_NODE const*, unsigned long)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_value(stack_st_X509_POLICY_LEVEL const*, unsigned long)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_value(stack_st_X509V3_EXT_METHOD const*, unsigned long)
424
                                                                               \
425
  OPENSSL_INLINE ptrtype sk_##name##_set(STACK_OF(name) *sk, size_t i,         \
426
10.2k
                                         ptrtype p) {                          \
427
10.2k
    return (ptrtype)OPENSSL_sk_set((OPENSSL_STACK *)sk, i, (void *)p);         \
428
10.2k
  }                                                                            \
Unexecuted instantiation: sk_void_set
Unexecuted instantiation: sk_OPENSSL_STRING_set
Unexecuted instantiation: sk_BIO_set
Unexecuted instantiation: sk_ASN1_INTEGER_set
Unexecuted instantiation: sk_ASN1_OBJECT_set
Unexecuted instantiation: sk_ASN1_TYPE_set
Unexecuted instantiation: sk_CONF_VALUE_set
Unexecuted instantiation: sk_CRYPTO_BUFFER_set
Unexecuted instantiation: sk_X509_set
Unexecuted instantiation: sk_GENERAL_NAME_set
Unexecuted instantiation: sk_X509_CRL_set
Unexecuted instantiation: sk_X509_REVOKED_set
sk_X509_NAME_ENTRY_set
Line
Count
Source
426
10.2k
                                         ptrtype p) {                          \
427
10.2k
    return (ptrtype)OPENSSL_sk_set((OPENSSL_STACK *)sk, i, (void *)p);         \
428
10.2k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_set
Unexecuted instantiation: sk_X509_EXTENSION_set
Unexecuted instantiation: sk_GENERAL_SUBTREE_set
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_set
Unexecuted instantiation: sk_DIST_POINT_set
Unexecuted instantiation: sk_POLICYQUALINFO_set
Unexecuted instantiation: sk_POLICYINFO_set
Unexecuted instantiation: sk_POLICY_MAPPING_set
Unexecuted instantiation: sk_X509_ALGOR_set
Unexecuted instantiation: sk_X509_ATTRIBUTE_set
Unexecuted instantiation: sk_X509_OBJECT_set
Unexecuted instantiation: sk_X509_INFO_set
Unexecuted instantiation: sk_SSL_CIPHER_set
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_set
Unexecuted instantiation: sk_SSL_COMP_set
Unexecuted instantiation: sk_ASN1_VALUE_set
Unexecuted instantiation: sk_X509_LOOKUP_set
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_set(stack_st_STACK_OF_X509_NAME_ENTRY*, unsigned long, stack_st_X509_NAME_ENTRY*)
Unexecuted instantiation: sk_BY_DIR_HASH_set(stack_st_BY_DIR_HASH*, unsigned long, lookup_dir_hashes_st*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_set(stack_st_BY_DIR_ENTRY*, unsigned long, lookup_dir_entry_st*)
Unexecuted instantiation: sk_X509_POLICY_NODE_set(stack_st_X509_POLICY_NODE*, unsigned long, x509_policy_node_st*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_set(stack_st_X509_POLICY_LEVEL*, unsigned long, x509_policy_level_st*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_set(stack_st_X509V3_EXT_METHOD*, unsigned long, v3_ext_method*)
429
                                                                               \
430
18.3k
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
431
18.3k
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
432
18.3k
  }                                                                            \
Unexecuted instantiation: sk_void_free
Unexecuted instantiation: sk_OPENSSL_STRING_free
Unexecuted instantiation: sk_BIO_free
Unexecuted instantiation: sk_ASN1_INTEGER_free
Unexecuted instantiation: sk_ASN1_OBJECT_free
Unexecuted instantiation: sk_ASN1_TYPE_free
Unexecuted instantiation: sk_CONF_VALUE_free
Unexecuted instantiation: sk_CRYPTO_BUFFER_free
Unexecuted instantiation: sk_X509_free
Unexecuted instantiation: sk_GENERAL_NAME_free
Unexecuted instantiation: sk_X509_CRL_free
Unexecuted instantiation: sk_X509_REVOKED_free
sk_X509_NAME_ENTRY_free
Line
Count
Source
430
10.7k
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
431
10.7k
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
432
10.7k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_free
Unexecuted instantiation: sk_X509_EXTENSION_free
Unexecuted instantiation: sk_GENERAL_SUBTREE_free
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_free
Unexecuted instantiation: sk_DIST_POINT_free
Unexecuted instantiation: sk_POLICYQUALINFO_free
Unexecuted instantiation: sk_POLICYINFO_free
Unexecuted instantiation: sk_POLICY_MAPPING_free
Unexecuted instantiation: sk_X509_ALGOR_free
Unexecuted instantiation: sk_X509_ATTRIBUTE_free
Unexecuted instantiation: sk_X509_OBJECT_free
Unexecuted instantiation: sk_X509_INFO_free
Unexecuted instantiation: sk_SSL_CIPHER_free
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_free
Unexecuted instantiation: sk_SSL_COMP_free
sk_ASN1_VALUE_free
Line
Count
Source
430
7.63k
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
431
7.63k
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
432
7.63k
  }                                                                            \
Unexecuted instantiation: sk_X509_LOOKUP_free
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_free(stack_st_STACK_OF_X509_NAME_ENTRY*)
Unexecuted instantiation: sk_BY_DIR_HASH_free(stack_st_BY_DIR_HASH*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_free(stack_st_BY_DIR_ENTRY*)
Unexecuted instantiation: sk_X509_POLICY_NODE_free(stack_st_X509_POLICY_NODE*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_free(stack_st_X509_POLICY_LEVEL*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_free(stack_st_X509V3_EXT_METHOD*)
433
                                                                               \
434
  OPENSSL_INLINE void sk_##name##_pop_free(STACK_OF(name) *sk,                 \
435
31.4k
                                           sk_##name##_free_func free_func) {  \
436
31.4k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
437
31.4k
                           (OPENSSL_sk_free_func)free_func);                   \
438
31.4k
  }                                                                            \
Unexecuted instantiation: sk_void_pop_free
Unexecuted instantiation: sk_OPENSSL_STRING_pop_free
Unexecuted instantiation: sk_BIO_pop_free
Unexecuted instantiation: sk_ASN1_INTEGER_pop_free
Unexecuted instantiation: sk_ASN1_OBJECT_pop_free
Unexecuted instantiation: sk_ASN1_TYPE_pop_free
Unexecuted instantiation: sk_CONF_VALUE_pop_free
Unexecuted instantiation: sk_CRYPTO_BUFFER_pop_free
sk_X509_pop_free
Line
Count
Source
435
10.1k
                                           sk_##name##_free_func free_func) {  \
436
10.1k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
437
10.1k
                           (OPENSSL_sk_free_func)free_func);                   \
438
10.1k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_pop_free
Unexecuted instantiation: sk_X509_CRL_pop_free
Unexecuted instantiation: sk_X509_REVOKED_pop_free
sk_X509_NAME_ENTRY_pop_free
Line
Count
Source
435
16.3k
                                           sk_##name##_free_func free_func) {  \
436
16.3k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
437
16.3k
                           (OPENSSL_sk_free_func)free_func);                   \
438
16.3k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_pop_free
Unexecuted instantiation: sk_X509_EXTENSION_pop_free
Unexecuted instantiation: sk_GENERAL_SUBTREE_pop_free
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_pop_free
Unexecuted instantiation: sk_DIST_POINT_pop_free
Unexecuted instantiation: sk_POLICYQUALINFO_pop_free
Unexecuted instantiation: sk_POLICYINFO_pop_free
Unexecuted instantiation: sk_POLICY_MAPPING_pop_free
Unexecuted instantiation: sk_X509_ALGOR_pop_free
Unexecuted instantiation: sk_X509_ATTRIBUTE_pop_free
Unexecuted instantiation: sk_X509_OBJECT_pop_free
Unexecuted instantiation: sk_X509_INFO_pop_free
Unexecuted instantiation: sk_SSL_CIPHER_pop_free
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_pop_free
Unexecuted instantiation: sk_SSL_COMP_pop_free
Unexecuted instantiation: sk_ASN1_VALUE_pop_free
Unexecuted instantiation: sk_X509_LOOKUP_pop_free
sk_STACK_OF_X509_NAME_ENTRY_pop_free(stack_st_STACK_OF_X509_NAME_ENTRY*, void (*)(stack_st_X509_NAME_ENTRY*))
Line
Count
Source
435
4.96k
                                           sk_##name##_free_func free_func) {  \
436
4.96k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
437
4.96k
                           (OPENSSL_sk_free_func)free_func);                   \
438
4.96k
  }                                                                            \
Unexecuted instantiation: sk_BY_DIR_ENTRY_pop_free(stack_st_BY_DIR_ENTRY*, void (*)(lookup_dir_entry_st*))
Unexecuted instantiation: sk_BY_DIR_HASH_pop_free(stack_st_BY_DIR_HASH*, void (*)(lookup_dir_hashes_st*))
Unexecuted instantiation: sk_X509_POLICY_NODE_pop_free(stack_st_X509_POLICY_NODE*, void (*)(x509_policy_node_st*))
Unexecuted instantiation: sk_X509_POLICY_LEVEL_pop_free(stack_st_X509_POLICY_LEVEL*, void (*)(x509_policy_level_st*))
Unexecuted instantiation: sk_X509V3_EXT_METHOD_pop_free(stack_st_X509V3_EXT_METHOD*, void (*)(v3_ext_method*))
439
                                                                               \
440
  OPENSSL_INLINE size_t sk_##name##_insert(STACK_OF(name) *sk, ptrtype p,      \
441
0
                                           size_t where) {                     \
442
0
    return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (void *)p, where);           \
443
0
  }                                                                            \
Unexecuted instantiation: sk_void_insert
Unexecuted instantiation: sk_OPENSSL_STRING_insert
Unexecuted instantiation: sk_BIO_insert
Unexecuted instantiation: sk_ASN1_INTEGER_insert
Unexecuted instantiation: sk_ASN1_OBJECT_insert
Unexecuted instantiation: sk_ASN1_TYPE_insert
Unexecuted instantiation: sk_CONF_VALUE_insert
Unexecuted instantiation: sk_CRYPTO_BUFFER_insert
Unexecuted instantiation: sk_X509_insert
Unexecuted instantiation: sk_GENERAL_NAME_insert
Unexecuted instantiation: sk_X509_CRL_insert
Unexecuted instantiation: sk_X509_REVOKED_insert
Unexecuted instantiation: sk_X509_NAME_ENTRY_insert
Unexecuted instantiation: sk_X509_NAME_insert
Unexecuted instantiation: sk_X509_EXTENSION_insert
Unexecuted instantiation: sk_GENERAL_SUBTREE_insert
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_insert
Unexecuted instantiation: sk_DIST_POINT_insert
Unexecuted instantiation: sk_POLICYQUALINFO_insert
Unexecuted instantiation: sk_POLICYINFO_insert
Unexecuted instantiation: sk_POLICY_MAPPING_insert
Unexecuted instantiation: sk_X509_ALGOR_insert
Unexecuted instantiation: sk_X509_ATTRIBUTE_insert
Unexecuted instantiation: sk_X509_OBJECT_insert
Unexecuted instantiation: sk_X509_INFO_insert
Unexecuted instantiation: sk_SSL_CIPHER_insert
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_insert
Unexecuted instantiation: sk_SSL_COMP_insert
Unexecuted instantiation: sk_ASN1_VALUE_insert
Unexecuted instantiation: sk_X509_LOOKUP_insert
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_insert(stack_st_STACK_OF_X509_NAME_ENTRY*, stack_st_X509_NAME_ENTRY*, unsigned long)
Unexecuted instantiation: sk_BY_DIR_HASH_insert(stack_st_BY_DIR_HASH*, lookup_dir_hashes_st*, unsigned long)
Unexecuted instantiation: sk_BY_DIR_ENTRY_insert(stack_st_BY_DIR_ENTRY*, lookup_dir_entry_st*, unsigned long)
Unexecuted instantiation: sk_X509_POLICY_NODE_insert(stack_st_X509_POLICY_NODE*, x509_policy_node_st*, unsigned long)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_insert(stack_st_X509_POLICY_LEVEL*, x509_policy_level_st*, unsigned long)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_insert(stack_st_X509V3_EXT_METHOD*, v3_ext_method*, unsigned long)
444
                                                                               \
445
  OPENSSL_INLINE ptrtype sk_##name##_delete(STACK_OF(name) *sk,                \
446
0
                                            size_t where) {                    \
447
0
    return (ptrtype)OPENSSL_sk_delete((OPENSSL_STACK *)sk, where);             \
448
0
  }                                                                            \
Unexecuted instantiation: sk_void_delete
Unexecuted instantiation: sk_OPENSSL_STRING_delete
Unexecuted instantiation: sk_BIO_delete
Unexecuted instantiation: sk_ASN1_INTEGER_delete
Unexecuted instantiation: sk_ASN1_OBJECT_delete
Unexecuted instantiation: sk_ASN1_TYPE_delete
Unexecuted instantiation: sk_CONF_VALUE_delete
Unexecuted instantiation: sk_CRYPTO_BUFFER_delete
Unexecuted instantiation: sk_X509_delete
Unexecuted instantiation: sk_GENERAL_NAME_delete
Unexecuted instantiation: sk_X509_CRL_delete
Unexecuted instantiation: sk_X509_REVOKED_delete
Unexecuted instantiation: sk_X509_NAME_ENTRY_delete
Unexecuted instantiation: sk_X509_NAME_delete
Unexecuted instantiation: sk_X509_EXTENSION_delete
Unexecuted instantiation: sk_GENERAL_SUBTREE_delete
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_delete
Unexecuted instantiation: sk_DIST_POINT_delete
Unexecuted instantiation: sk_POLICYQUALINFO_delete
Unexecuted instantiation: sk_POLICYINFO_delete
Unexecuted instantiation: sk_POLICY_MAPPING_delete
Unexecuted instantiation: sk_X509_ALGOR_delete
Unexecuted instantiation: sk_X509_ATTRIBUTE_delete
Unexecuted instantiation: sk_X509_OBJECT_delete
Unexecuted instantiation: sk_X509_INFO_delete
Unexecuted instantiation: sk_SSL_CIPHER_delete
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_delete
Unexecuted instantiation: sk_SSL_COMP_delete
Unexecuted instantiation: sk_ASN1_VALUE_delete
Unexecuted instantiation: sk_X509_LOOKUP_delete
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_delete(stack_st_STACK_OF_X509_NAME_ENTRY*, unsigned long)
Unexecuted instantiation: sk_BY_DIR_HASH_delete(stack_st_BY_DIR_HASH*, unsigned long)
Unexecuted instantiation: sk_BY_DIR_ENTRY_delete(stack_st_BY_DIR_ENTRY*, unsigned long)
Unexecuted instantiation: sk_X509_POLICY_NODE_delete(stack_st_X509_POLICY_NODE*, unsigned long)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_delete(stack_st_X509_POLICY_LEVEL*, unsigned long)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_delete(stack_st_X509V3_EXT_METHOD*, unsigned long)
449
                                                                               \
450
  OPENSSL_INLINE ptrtype sk_##name##_delete_ptr(STACK_OF(name) *sk,            \
451
0
                                                constptrtype p) {              \
452
0
    return (ptrtype)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk,                 \
453
0
                                          (const void *)p);                    \
454
0
  }                                                                            \
Unexecuted instantiation: sk_void_delete_ptr
Unexecuted instantiation: sk_OPENSSL_STRING_delete_ptr
Unexecuted instantiation: sk_BIO_delete_ptr
Unexecuted instantiation: sk_ASN1_INTEGER_delete_ptr
Unexecuted instantiation: sk_ASN1_OBJECT_delete_ptr
Unexecuted instantiation: sk_ASN1_TYPE_delete_ptr
Unexecuted instantiation: sk_CONF_VALUE_delete_ptr
Unexecuted instantiation: sk_CRYPTO_BUFFER_delete_ptr
Unexecuted instantiation: sk_X509_delete_ptr
Unexecuted instantiation: sk_GENERAL_NAME_delete_ptr
Unexecuted instantiation: sk_X509_CRL_delete_ptr
Unexecuted instantiation: sk_X509_REVOKED_delete_ptr
Unexecuted instantiation: sk_X509_NAME_ENTRY_delete_ptr
Unexecuted instantiation: sk_X509_NAME_delete_ptr
Unexecuted instantiation: sk_X509_EXTENSION_delete_ptr
Unexecuted instantiation: sk_GENERAL_SUBTREE_delete_ptr
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_delete_ptr
Unexecuted instantiation: sk_DIST_POINT_delete_ptr
Unexecuted instantiation: sk_POLICYQUALINFO_delete_ptr
Unexecuted instantiation: sk_POLICYINFO_delete_ptr
Unexecuted instantiation: sk_POLICY_MAPPING_delete_ptr
Unexecuted instantiation: sk_X509_ALGOR_delete_ptr
Unexecuted instantiation: sk_X509_ATTRIBUTE_delete_ptr
Unexecuted instantiation: sk_X509_OBJECT_delete_ptr
Unexecuted instantiation: sk_X509_INFO_delete_ptr
Unexecuted instantiation: sk_SSL_CIPHER_delete_ptr
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_delete_ptr
Unexecuted instantiation: sk_SSL_COMP_delete_ptr
Unexecuted instantiation: sk_ASN1_VALUE_delete_ptr
Unexecuted instantiation: sk_X509_LOOKUP_delete_ptr
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_delete_ptr(stack_st_STACK_OF_X509_NAME_ENTRY*, stack_st_X509_NAME_ENTRY const*)
Unexecuted instantiation: sk_BY_DIR_HASH_delete_ptr(stack_st_BY_DIR_HASH*, lookup_dir_hashes_st const*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_delete_ptr(stack_st_BY_DIR_ENTRY*, lookup_dir_entry_st const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_delete_ptr(stack_st_X509_POLICY_NODE*, x509_policy_node_st const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_delete_ptr(stack_st_X509_POLICY_LEVEL*, x509_policy_level_st const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_delete_ptr(stack_st_X509V3_EXT_METHOD*, v3_ext_method const*)
455
                                                                               \
456
  OPENSSL_INLINE void sk_##name##_delete_if(                                   \
457
0
      STACK_OF(name) *sk, sk_##name##_delete_if_func func, void *data) {       \
458
0
    OPENSSL_sk_delete_if((OPENSSL_STACK *)sk, sk_##name##_call_delete_if_func, \
459
0
                         (OPENSSL_sk_delete_if_func)func, data);               \
460
0
  }                                                                            \
Unexecuted instantiation: sk_void_delete_if
Unexecuted instantiation: sk_OPENSSL_STRING_delete_if
Unexecuted instantiation: sk_BIO_delete_if
Unexecuted instantiation: sk_ASN1_INTEGER_delete_if
Unexecuted instantiation: sk_ASN1_OBJECT_delete_if
Unexecuted instantiation: sk_ASN1_TYPE_delete_if
Unexecuted instantiation: sk_CONF_VALUE_delete_if
Unexecuted instantiation: sk_CRYPTO_BUFFER_delete_if
Unexecuted instantiation: sk_X509_delete_if
Unexecuted instantiation: sk_GENERAL_NAME_delete_if
Unexecuted instantiation: sk_X509_CRL_delete_if
Unexecuted instantiation: sk_X509_REVOKED_delete_if
Unexecuted instantiation: sk_X509_NAME_ENTRY_delete_if
Unexecuted instantiation: sk_X509_NAME_delete_if
Unexecuted instantiation: sk_X509_EXTENSION_delete_if
Unexecuted instantiation: sk_GENERAL_SUBTREE_delete_if
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_delete_if
Unexecuted instantiation: sk_DIST_POINT_delete_if
Unexecuted instantiation: sk_POLICYQUALINFO_delete_if
Unexecuted instantiation: sk_POLICYINFO_delete_if
Unexecuted instantiation: sk_POLICY_MAPPING_delete_if
Unexecuted instantiation: sk_X509_ALGOR_delete_if
Unexecuted instantiation: sk_X509_ATTRIBUTE_delete_if
Unexecuted instantiation: sk_X509_OBJECT_delete_if
Unexecuted instantiation: sk_X509_INFO_delete_if
Unexecuted instantiation: sk_SSL_CIPHER_delete_if
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_delete_if
Unexecuted instantiation: sk_SSL_COMP_delete_if
Unexecuted instantiation: sk_ASN1_VALUE_delete_if
Unexecuted instantiation: sk_X509_LOOKUP_delete_if
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_delete_if(stack_st_STACK_OF_X509_NAME_ENTRY*, int (*)(stack_st_X509_NAME_ENTRY*, void*), void*)
Unexecuted instantiation: sk_BY_DIR_HASH_delete_if(stack_st_BY_DIR_HASH*, int (*)(lookup_dir_hashes_st*, void*), void*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_delete_if(stack_st_BY_DIR_ENTRY*, int (*)(lookup_dir_entry_st*, void*), void*)
Unexecuted instantiation: sk_X509_POLICY_NODE_delete_if(stack_st_X509_POLICY_NODE*, int (*)(x509_policy_node_st*, void*), void*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_delete_if(stack_st_X509_POLICY_LEVEL*, int (*)(x509_policy_level_st*, void*), void*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_delete_if(stack_st_X509V3_EXT_METHOD*, int (*)(v3_ext_method*, void*), void*)
461
                                                                               \
462
  OPENSSL_INLINE int sk_##name##_find(const STACK_OF(name) *sk,                \
463
0
                                      size_t *out_index, constptrtype p) {     \
464
0
    return OPENSSL_sk_find((const OPENSSL_STACK *)sk, out_index,               \
465
0
                           (const void *)p, sk_##name##_call_cmp_func);        \
466
0
  }                                                                            \
Unexecuted instantiation: sk_void_find
Unexecuted instantiation: sk_OPENSSL_STRING_find
Unexecuted instantiation: sk_BIO_find
Unexecuted instantiation: sk_ASN1_INTEGER_find
Unexecuted instantiation: sk_ASN1_OBJECT_find
Unexecuted instantiation: sk_ASN1_TYPE_find
Unexecuted instantiation: sk_CONF_VALUE_find
Unexecuted instantiation: sk_CRYPTO_BUFFER_find
Unexecuted instantiation: sk_X509_find
Unexecuted instantiation: sk_GENERAL_NAME_find
Unexecuted instantiation: sk_X509_CRL_find
Unexecuted instantiation: sk_X509_REVOKED_find
Unexecuted instantiation: sk_X509_NAME_ENTRY_find
Unexecuted instantiation: sk_X509_NAME_find
Unexecuted instantiation: sk_X509_EXTENSION_find
Unexecuted instantiation: sk_GENERAL_SUBTREE_find
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_find
Unexecuted instantiation: sk_DIST_POINT_find
Unexecuted instantiation: sk_POLICYQUALINFO_find
Unexecuted instantiation: sk_POLICYINFO_find
Unexecuted instantiation: sk_POLICY_MAPPING_find
Unexecuted instantiation: sk_X509_ALGOR_find
Unexecuted instantiation: sk_X509_ATTRIBUTE_find
Unexecuted instantiation: sk_X509_OBJECT_find
Unexecuted instantiation: sk_X509_INFO_find
Unexecuted instantiation: sk_SSL_CIPHER_find
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_find
Unexecuted instantiation: sk_SSL_COMP_find
Unexecuted instantiation: sk_ASN1_VALUE_find
Unexecuted instantiation: sk_X509_LOOKUP_find
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_find(stack_st_STACK_OF_X509_NAME_ENTRY const*, unsigned long*, stack_st_X509_NAME_ENTRY const*)
Unexecuted instantiation: sk_BY_DIR_HASH_find(stack_st_BY_DIR_HASH const*, unsigned long*, lookup_dir_hashes_st const*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_find(stack_st_BY_DIR_ENTRY const*, unsigned long*, lookup_dir_entry_st const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_find(stack_st_X509_POLICY_NODE const*, unsigned long*, x509_policy_node_st const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_find(stack_st_X509_POLICY_LEVEL const*, unsigned long*, x509_policy_level_st const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_find(stack_st_X509V3_EXT_METHOD const*, unsigned long*, v3_ext_method const*)
467
                                                                               \
468
0
  OPENSSL_INLINE ptrtype sk_##name##_shift(STACK_OF(name) *sk) {               \
469
0
    return (ptrtype)OPENSSL_sk_shift((OPENSSL_STACK *)sk);                     \
470
0
  }                                                                            \
Unexecuted instantiation: sk_void_shift
Unexecuted instantiation: sk_OPENSSL_STRING_shift
Unexecuted instantiation: sk_BIO_shift
Unexecuted instantiation: sk_ASN1_INTEGER_shift
Unexecuted instantiation: sk_ASN1_OBJECT_shift
Unexecuted instantiation: sk_ASN1_TYPE_shift
Unexecuted instantiation: sk_CONF_VALUE_shift
Unexecuted instantiation: sk_CRYPTO_BUFFER_shift
Unexecuted instantiation: sk_X509_shift
Unexecuted instantiation: sk_GENERAL_NAME_shift
Unexecuted instantiation: sk_X509_CRL_shift
Unexecuted instantiation: sk_X509_REVOKED_shift
Unexecuted instantiation: sk_X509_NAME_ENTRY_shift
Unexecuted instantiation: sk_X509_NAME_shift
Unexecuted instantiation: sk_X509_EXTENSION_shift
Unexecuted instantiation: sk_GENERAL_SUBTREE_shift
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_shift
Unexecuted instantiation: sk_DIST_POINT_shift
Unexecuted instantiation: sk_POLICYQUALINFO_shift
Unexecuted instantiation: sk_POLICYINFO_shift
Unexecuted instantiation: sk_POLICY_MAPPING_shift
Unexecuted instantiation: sk_X509_ALGOR_shift
Unexecuted instantiation: sk_X509_ATTRIBUTE_shift
Unexecuted instantiation: sk_X509_OBJECT_shift
Unexecuted instantiation: sk_X509_INFO_shift
Unexecuted instantiation: sk_SSL_CIPHER_shift
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_shift
Unexecuted instantiation: sk_SSL_COMP_shift
Unexecuted instantiation: sk_ASN1_VALUE_shift
Unexecuted instantiation: sk_X509_LOOKUP_shift
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_shift(stack_st_STACK_OF_X509_NAME_ENTRY*)
Unexecuted instantiation: sk_BY_DIR_HASH_shift(stack_st_BY_DIR_HASH*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_shift(stack_st_BY_DIR_ENTRY*)
Unexecuted instantiation: sk_X509_POLICY_NODE_shift(stack_st_X509_POLICY_NODE*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_shift(stack_st_X509_POLICY_LEVEL*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_shift(stack_st_X509V3_EXT_METHOD*)
471
                                                                               \
472
64.4k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
473
64.4k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
474
64.4k
  }                                                                            \
Unexecuted instantiation: sk_void_push
Unexecuted instantiation: sk_OPENSSL_STRING_push
Unexecuted instantiation: sk_BIO_push
Unexecuted instantiation: sk_ASN1_INTEGER_push
Unexecuted instantiation: sk_ASN1_OBJECT_push
Unexecuted instantiation: sk_ASN1_TYPE_push
Unexecuted instantiation: sk_CONF_VALUE_push
Unexecuted instantiation: sk_CRYPTO_BUFFER_push
Unexecuted instantiation: sk_X509_push
Unexecuted instantiation: sk_GENERAL_NAME_push
Unexecuted instantiation: sk_X509_CRL_push
Unexecuted instantiation: sk_X509_REVOKED_push
sk_X509_NAME_ENTRY_push
Line
Count
Source
472
20.3k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
473
20.3k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
474
20.3k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_push
Unexecuted instantiation: sk_X509_EXTENSION_push
Unexecuted instantiation: sk_GENERAL_SUBTREE_push
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_push
Unexecuted instantiation: sk_DIST_POINT_push
Unexecuted instantiation: sk_POLICYQUALINFO_push
Unexecuted instantiation: sk_POLICYINFO_push
Unexecuted instantiation: sk_POLICY_MAPPING_push
Unexecuted instantiation: sk_X509_ALGOR_push
Unexecuted instantiation: sk_X509_ATTRIBUTE_push
Unexecuted instantiation: sk_X509_OBJECT_push
Unexecuted instantiation: sk_X509_INFO_push
sk_SSL_CIPHER_push
Line
Count
Source
472
38
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
473
38
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
474
38
  }                                                                            \
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_push
Unexecuted instantiation: sk_SSL_COMP_push
sk_ASN1_VALUE_push
Line
Count
Source
472
34.8k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
473
34.8k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
474
34.8k
  }                                                                            \
Unexecuted instantiation: sk_X509_LOOKUP_push
sk_STACK_OF_X509_NAME_ENTRY_push(stack_st_STACK_OF_X509_NAME_ENTRY*, stack_st_X509_NAME_ENTRY*)
Line
Count
Source
472
9.21k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
473
9.21k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
474
9.21k
  }                                                                            \
Unexecuted instantiation: sk_BY_DIR_ENTRY_push(stack_st_BY_DIR_ENTRY*, lookup_dir_entry_st*)
Unexecuted instantiation: sk_BY_DIR_HASH_push(stack_st_BY_DIR_HASH*, lookup_dir_hashes_st*)
Unexecuted instantiation: sk_X509_POLICY_NODE_push(stack_st_X509_POLICY_NODE*, x509_policy_node_st*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_push(stack_st_X509_POLICY_LEVEL*, x509_policy_level_st*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_push(stack_st_X509V3_EXT_METHOD*, v3_ext_method*)
475
                                                                               \
476
0
  OPENSSL_INLINE ptrtype sk_##name##_pop(STACK_OF(name) *sk) {                 \
477
0
    return (ptrtype)OPENSSL_sk_pop((OPENSSL_STACK *)sk);                       \
478
0
  }                                                                            \
Unexecuted instantiation: sk_void_pop
Unexecuted instantiation: sk_OPENSSL_STRING_pop
Unexecuted instantiation: sk_BIO_pop
Unexecuted instantiation: sk_ASN1_INTEGER_pop
Unexecuted instantiation: sk_ASN1_OBJECT_pop
Unexecuted instantiation: sk_ASN1_TYPE_pop
Unexecuted instantiation: sk_CONF_VALUE_pop
Unexecuted instantiation: sk_CRYPTO_BUFFER_pop
Unexecuted instantiation: sk_X509_pop
Unexecuted instantiation: sk_GENERAL_NAME_pop
Unexecuted instantiation: sk_X509_CRL_pop
Unexecuted instantiation: sk_X509_REVOKED_pop
Unexecuted instantiation: sk_X509_NAME_ENTRY_pop
Unexecuted instantiation: sk_X509_NAME_pop
Unexecuted instantiation: sk_X509_EXTENSION_pop
Unexecuted instantiation: sk_GENERAL_SUBTREE_pop
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_pop
Unexecuted instantiation: sk_DIST_POINT_pop
Unexecuted instantiation: sk_POLICYQUALINFO_pop
Unexecuted instantiation: sk_POLICYINFO_pop
Unexecuted instantiation: sk_POLICY_MAPPING_pop
Unexecuted instantiation: sk_X509_ALGOR_pop
Unexecuted instantiation: sk_X509_ATTRIBUTE_pop
Unexecuted instantiation: sk_X509_OBJECT_pop
Unexecuted instantiation: sk_X509_INFO_pop
Unexecuted instantiation: sk_SSL_CIPHER_pop
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_pop
Unexecuted instantiation: sk_SSL_COMP_pop
Unexecuted instantiation: sk_ASN1_VALUE_pop
Unexecuted instantiation: sk_X509_LOOKUP_pop
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_pop(stack_st_STACK_OF_X509_NAME_ENTRY*)
Unexecuted instantiation: sk_BY_DIR_HASH_pop(stack_st_BY_DIR_HASH*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_pop(stack_st_BY_DIR_ENTRY*)
Unexecuted instantiation: sk_X509_POLICY_NODE_pop(stack_st_X509_POLICY_NODE*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_pop(stack_st_X509_POLICY_LEVEL*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_pop(stack_st_X509V3_EXT_METHOD*)
479
                                                                               \
480
0
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_dup(const STACK_OF(name) *sk) {   \
481
0
    return (STACK_OF(name) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk);        \
482
0
  }                                                                            \
Unexecuted instantiation: sk_void_dup
Unexecuted instantiation: sk_OPENSSL_STRING_dup
Unexecuted instantiation: sk_BIO_dup
Unexecuted instantiation: sk_ASN1_INTEGER_dup
Unexecuted instantiation: sk_ASN1_OBJECT_dup
Unexecuted instantiation: sk_ASN1_TYPE_dup
Unexecuted instantiation: sk_CONF_VALUE_dup
Unexecuted instantiation: sk_CRYPTO_BUFFER_dup
Unexecuted instantiation: sk_X509_dup
Unexecuted instantiation: sk_GENERAL_NAME_dup
Unexecuted instantiation: sk_X509_CRL_dup
Unexecuted instantiation: sk_X509_REVOKED_dup
Unexecuted instantiation: sk_X509_NAME_ENTRY_dup
Unexecuted instantiation: sk_X509_NAME_dup
Unexecuted instantiation: sk_X509_EXTENSION_dup
Unexecuted instantiation: sk_GENERAL_SUBTREE_dup
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_dup
Unexecuted instantiation: sk_DIST_POINT_dup
Unexecuted instantiation: sk_POLICYQUALINFO_dup
Unexecuted instantiation: sk_POLICYINFO_dup
Unexecuted instantiation: sk_POLICY_MAPPING_dup
Unexecuted instantiation: sk_X509_ALGOR_dup
Unexecuted instantiation: sk_X509_ATTRIBUTE_dup
Unexecuted instantiation: sk_X509_OBJECT_dup
Unexecuted instantiation: sk_X509_INFO_dup
Unexecuted instantiation: sk_SSL_CIPHER_dup
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_dup
Unexecuted instantiation: sk_SSL_COMP_dup
Unexecuted instantiation: sk_ASN1_VALUE_dup
Unexecuted instantiation: sk_X509_LOOKUP_dup
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_dup(stack_st_STACK_OF_X509_NAME_ENTRY const*)
Unexecuted instantiation: sk_BY_DIR_HASH_dup(stack_st_BY_DIR_HASH const*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_dup(stack_st_BY_DIR_ENTRY const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_dup(stack_st_X509_POLICY_NODE const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_dup(stack_st_X509_POLICY_LEVEL const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_dup(stack_st_X509V3_EXT_METHOD const*)
483
                                                                               \
484
0
  OPENSSL_INLINE void sk_##name##_sort(STACK_OF(name) *sk) {                   \
485
0
    OPENSSL_sk_sort((OPENSSL_STACK *)sk, sk_##name##_call_cmp_func);           \
486
0
  }                                                                            \
Unexecuted instantiation: sk_void_sort
Unexecuted instantiation: sk_OPENSSL_STRING_sort
Unexecuted instantiation: sk_BIO_sort
Unexecuted instantiation: sk_ASN1_INTEGER_sort
Unexecuted instantiation: sk_ASN1_OBJECT_sort
Unexecuted instantiation: sk_ASN1_TYPE_sort
Unexecuted instantiation: sk_CONF_VALUE_sort
Unexecuted instantiation: sk_CRYPTO_BUFFER_sort
Unexecuted instantiation: sk_X509_sort
Unexecuted instantiation: sk_GENERAL_NAME_sort
Unexecuted instantiation: sk_X509_CRL_sort
Unexecuted instantiation: sk_X509_REVOKED_sort
Unexecuted instantiation: sk_X509_NAME_ENTRY_sort
Unexecuted instantiation: sk_X509_NAME_sort
Unexecuted instantiation: sk_X509_EXTENSION_sort
Unexecuted instantiation: sk_GENERAL_SUBTREE_sort
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_sort
Unexecuted instantiation: sk_DIST_POINT_sort
Unexecuted instantiation: sk_POLICYQUALINFO_sort
Unexecuted instantiation: sk_POLICYINFO_sort
Unexecuted instantiation: sk_POLICY_MAPPING_sort
Unexecuted instantiation: sk_X509_ALGOR_sort
Unexecuted instantiation: sk_X509_ATTRIBUTE_sort
Unexecuted instantiation: sk_X509_OBJECT_sort
Unexecuted instantiation: sk_X509_INFO_sort
Unexecuted instantiation: sk_SSL_CIPHER_sort
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_sort
Unexecuted instantiation: sk_SSL_COMP_sort
Unexecuted instantiation: sk_ASN1_VALUE_sort
Unexecuted instantiation: sk_X509_LOOKUP_sort
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_sort(stack_st_STACK_OF_X509_NAME_ENTRY*)
Unexecuted instantiation: sk_BY_DIR_HASH_sort(stack_st_BY_DIR_HASH*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_sort(stack_st_BY_DIR_ENTRY*)
Unexecuted instantiation: sk_X509_POLICY_NODE_sort(stack_st_X509_POLICY_NODE*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_sort(stack_st_X509_POLICY_LEVEL*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_sort(stack_st_X509V3_EXT_METHOD*)
487
                                                                               \
488
0
  OPENSSL_INLINE int sk_##name##_is_sorted(const STACK_OF(name) *sk) {         \
489
0
    return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk);                    \
490
0
  }                                                                            \
Unexecuted instantiation: sk_void_is_sorted
Unexecuted instantiation: sk_OPENSSL_STRING_is_sorted
Unexecuted instantiation: sk_BIO_is_sorted
Unexecuted instantiation: sk_ASN1_INTEGER_is_sorted
Unexecuted instantiation: sk_ASN1_OBJECT_is_sorted
Unexecuted instantiation: sk_ASN1_TYPE_is_sorted
Unexecuted instantiation: sk_CONF_VALUE_is_sorted
Unexecuted instantiation: sk_CRYPTO_BUFFER_is_sorted
Unexecuted instantiation: sk_X509_is_sorted
Unexecuted instantiation: sk_GENERAL_NAME_is_sorted
Unexecuted instantiation: sk_X509_CRL_is_sorted
Unexecuted instantiation: sk_X509_REVOKED_is_sorted
Unexecuted instantiation: sk_X509_NAME_ENTRY_is_sorted
Unexecuted instantiation: sk_X509_NAME_is_sorted
Unexecuted instantiation: sk_X509_EXTENSION_is_sorted
Unexecuted instantiation: sk_GENERAL_SUBTREE_is_sorted
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_is_sorted
Unexecuted instantiation: sk_DIST_POINT_is_sorted
Unexecuted instantiation: sk_POLICYQUALINFO_is_sorted
Unexecuted instantiation: sk_POLICYINFO_is_sorted
Unexecuted instantiation: sk_POLICY_MAPPING_is_sorted
Unexecuted instantiation: sk_X509_ALGOR_is_sorted
Unexecuted instantiation: sk_X509_ATTRIBUTE_is_sorted
Unexecuted instantiation: sk_X509_OBJECT_is_sorted
Unexecuted instantiation: sk_X509_INFO_is_sorted
Unexecuted instantiation: sk_SSL_CIPHER_is_sorted
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_is_sorted
Unexecuted instantiation: sk_SSL_COMP_is_sorted
Unexecuted instantiation: sk_ASN1_VALUE_is_sorted
Unexecuted instantiation: sk_X509_LOOKUP_is_sorted
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_is_sorted(stack_st_STACK_OF_X509_NAME_ENTRY const*)
Unexecuted instantiation: sk_BY_DIR_HASH_is_sorted(stack_st_BY_DIR_HASH const*)
Unexecuted instantiation: sk_BY_DIR_ENTRY_is_sorted(stack_st_BY_DIR_ENTRY const*)
Unexecuted instantiation: sk_X509_POLICY_NODE_is_sorted(stack_st_X509_POLICY_NODE const*)
Unexecuted instantiation: sk_X509_POLICY_LEVEL_is_sorted(stack_st_X509_POLICY_LEVEL const*)
Unexecuted instantiation: sk_X509V3_EXT_METHOD_is_sorted(stack_st_X509V3_EXT_METHOD const*)
491
                                                                               \
492
  OPENSSL_INLINE sk_##name##_cmp_func sk_##name##_set_cmp_func(                \
493
0
      STACK_OF(name) *sk, sk_##name##_cmp_func comp) {                         \
494
0
    return (sk_##name##_cmp_func)OPENSSL_sk_set_cmp_func(                      \
495
0
        (OPENSSL_STACK *)sk, (OPENSSL_sk_cmp_func)comp);                       \
496
0
  }                                                                            \
Unexecuted instantiation: sk_void_set_cmp_func
Unexecuted instantiation: sk_OPENSSL_STRING_set_cmp_func
Unexecuted instantiation: sk_BIO_set_cmp_func
Unexecuted instantiation: sk_ASN1_INTEGER_set_cmp_func
Unexecuted instantiation: sk_ASN1_OBJECT_set_cmp_func
Unexecuted instantiation: sk_ASN1_TYPE_set_cmp_func
Unexecuted instantiation: sk_CONF_VALUE_set_cmp_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_set_cmp_func
Unexecuted instantiation: sk_X509_set_cmp_func
Unexecuted instantiation: sk_GENERAL_NAME_set_cmp_func
Unexecuted instantiation: sk_X509_CRL_set_cmp_func
Unexecuted instantiation: sk_X509_REVOKED_set_cmp_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_set_cmp_func
Unexecuted instantiation: sk_X509_NAME_set_cmp_func
Unexecuted instantiation: sk_X509_EXTENSION_set_cmp_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_set_cmp_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_set_cmp_func
Unexecuted instantiation: sk_DIST_POINT_set_cmp_func
Unexecuted instantiation: sk_POLICYQUALINFO_set_cmp_func
Unexecuted instantiation: sk_POLICYINFO_set_cmp_func
Unexecuted instantiation: sk_POLICY_MAPPING_set_cmp_func
Unexecuted instantiation: sk_X509_ALGOR_set_cmp_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_set_cmp_func
Unexecuted instantiation: sk_X509_OBJECT_set_cmp_func
Unexecuted instantiation: sk_X509_INFO_set_cmp_func
Unexecuted instantiation: sk_SSL_CIPHER_set_cmp_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_set_cmp_func
Unexecuted instantiation: sk_SSL_COMP_set_cmp_func
Unexecuted instantiation: sk_ASN1_VALUE_set_cmp_func
Unexecuted instantiation: sk_X509_LOOKUP_set_cmp_func
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_set_cmp_func(stack_st_STACK_OF_X509_NAME_ENTRY*, int (*)(stack_st_X509_NAME_ENTRY const* const*, stack_st_X509_NAME_ENTRY const* const*))
Unexecuted instantiation: sk_BY_DIR_HASH_set_cmp_func(stack_st_BY_DIR_HASH*, int (*)(lookup_dir_hashes_st const* const*, lookup_dir_hashes_st const* const*))
Unexecuted instantiation: sk_BY_DIR_ENTRY_set_cmp_func(stack_st_BY_DIR_ENTRY*, int (*)(lookup_dir_entry_st const* const*, lookup_dir_entry_st const* const*))
Unexecuted instantiation: sk_X509_POLICY_NODE_set_cmp_func(stack_st_X509_POLICY_NODE*, int (*)(x509_policy_node_st const* const*, x509_policy_node_st const* const*))
Unexecuted instantiation: sk_X509_POLICY_LEVEL_set_cmp_func(stack_st_X509_POLICY_LEVEL*, int (*)(x509_policy_level_st const* const*, x509_policy_level_st const* const*))
Unexecuted instantiation: sk_X509V3_EXT_METHOD_set_cmp_func(stack_st_X509V3_EXT_METHOD*, int (*)(v3_ext_method const* const*, v3_ext_method const* const*))
497
                                                                               \
498
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_deep_copy(                        \
499
      const STACK_OF(name) *sk, sk_##name##_copy_func copy_func,               \
500
0
      sk_##name##_free_func free_func) {                                       \
501
0
    return (STACK_OF(name) *)OPENSSL_sk_deep_copy(                             \
502
0
        (const OPENSSL_STACK *)sk, sk_##name##_call_copy_func,                 \
503
0
        (OPENSSL_sk_copy_func)copy_func, sk_##name##_call_free_func,           \
504
0
        (OPENSSL_sk_free_func)free_func);                                      \
505
0
  }                                                                            \
Unexecuted instantiation: sk_void_deep_copy
Unexecuted instantiation: sk_OPENSSL_STRING_deep_copy
Unexecuted instantiation: sk_BIO_deep_copy
Unexecuted instantiation: sk_ASN1_INTEGER_deep_copy
Unexecuted instantiation: sk_ASN1_OBJECT_deep_copy
Unexecuted instantiation: sk_ASN1_TYPE_deep_copy
Unexecuted instantiation: sk_CONF_VALUE_deep_copy
Unexecuted instantiation: sk_CRYPTO_BUFFER_deep_copy
Unexecuted instantiation: sk_X509_deep_copy
Unexecuted instantiation: sk_GENERAL_NAME_deep_copy
Unexecuted instantiation: sk_X509_CRL_deep_copy
Unexecuted instantiation: sk_X509_REVOKED_deep_copy
Unexecuted instantiation: sk_X509_NAME_ENTRY_deep_copy
Unexecuted instantiation: sk_X509_NAME_deep_copy
Unexecuted instantiation: sk_X509_EXTENSION_deep_copy
Unexecuted instantiation: sk_GENERAL_SUBTREE_deep_copy
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_deep_copy
Unexecuted instantiation: sk_DIST_POINT_deep_copy
Unexecuted instantiation: sk_POLICYQUALINFO_deep_copy
Unexecuted instantiation: sk_POLICYINFO_deep_copy
Unexecuted instantiation: sk_POLICY_MAPPING_deep_copy
Unexecuted instantiation: sk_X509_ALGOR_deep_copy
Unexecuted instantiation: sk_X509_ATTRIBUTE_deep_copy
Unexecuted instantiation: sk_X509_OBJECT_deep_copy
Unexecuted instantiation: sk_X509_INFO_deep_copy
Unexecuted instantiation: sk_SSL_CIPHER_deep_copy
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_deep_copy
Unexecuted instantiation: sk_SSL_COMP_deep_copy
Unexecuted instantiation: sk_ASN1_VALUE_deep_copy
Unexecuted instantiation: sk_X509_LOOKUP_deep_copy
Unexecuted instantiation: sk_STACK_OF_X509_NAME_ENTRY_deep_copy(stack_st_STACK_OF_X509_NAME_ENTRY const*, stack_st_X509_NAME_ENTRY* (*)(stack_st_X509_NAME_ENTRY const*), void (*)(stack_st_X509_NAME_ENTRY*))
Unexecuted instantiation: sk_BY_DIR_HASH_deep_copy(stack_st_BY_DIR_HASH const*, lookup_dir_hashes_st* (*)(lookup_dir_hashes_st const*), void (*)(lookup_dir_hashes_st*))
Unexecuted instantiation: sk_BY_DIR_ENTRY_deep_copy(stack_st_BY_DIR_ENTRY const*, lookup_dir_entry_st* (*)(lookup_dir_entry_st const*), void (*)(lookup_dir_entry_st*))
Unexecuted instantiation: sk_X509_POLICY_NODE_deep_copy(stack_st_X509_POLICY_NODE const*, x509_policy_node_st* (*)(x509_policy_node_st const*), void (*)(x509_policy_node_st*))
Unexecuted instantiation: sk_X509_POLICY_LEVEL_deep_copy(stack_st_X509_POLICY_LEVEL const*, x509_policy_level_st* (*)(x509_policy_level_st const*), void (*)(x509_policy_level_st*))
Unexecuted instantiation: sk_X509V3_EXT_METHOD_deep_copy(stack_st_X509V3_EXT_METHOD const*, v3_ext_method* (*)(v3_ext_method const*), void (*)(v3_ext_method*))
506
                                                                               \
507
  OPENSSL_GNUC_CLANG_PRAGMA("GCC diagnostic pop")                              \
508
  OPENSSL_MSVC_PRAGMA(warning(pop))
509
510
511
// Built-in stacks.
512
513
typedef char *OPENSSL_STRING;
514
515
DEFINE_STACK_OF(void)
516
DEFINE_NAMED_STACK_OF(OPENSSL_STRING, char)
517
518
519
#if defined(__cplusplus)
520
}  // extern C
521
#endif
522
523
#if !defined(BORINGSSL_NO_CXX)
524
extern "C++" {
525
526
#include <type_traits>
527
528
BSSL_NAMESPACE_BEGIN
529
530
namespace internal {
531
532
// Stacks defined with |DEFINE_CONST_STACK_OF| are freed with |sk_free|.
533
template <typename Stack>
534
struct DeleterImpl<Stack, std::enable_if_t<StackTraits<Stack>::kIsConst>> {
535
0
  static void Free(Stack *sk) {
536
0
    OPENSSL_sk_free(reinterpret_cast<OPENSSL_STACK *>(sk));
537
0
  }
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_SSL_CIPHER, void>::Free(stack_st_SSL_CIPHER*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_SRTP_PROTECTION_PROFILE, void>::Free(stack_st_SRTP_PROTECTION_PROFILE*)
538
};
539
540
// Stacks defined with |DEFINE_STACK_OF| are freed with |sk_pop_free| and the
541
// corresponding type's deleter.
542
template <typename Stack>
543
struct DeleterImpl<Stack, std::enable_if_t<!StackTraits<Stack>::kIsConst>> {
544
5.77k
  static void Free(Stack *sk) {
545
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
546
    // access it from C++ here.
547
5.77k
    using Type = typename StackTraits<Stack>::Type;
548
5.77k
    OPENSSL_sk_pop_free_ex(
549
5.77k
        reinterpret_cast<OPENSSL_STACK *>(sk),
550
80.4k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
551
80.4k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
552
80.4k
        },
bssl::internal::DeleterImpl<stack_st_CRYPTO_BUFFER, void>::Free(stack_st_CRYPTO_BUFFER*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
550
79.9k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
551
79.9k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
552
79.9k
        },
bssl::internal::DeleterImpl<stack_st_X509, void>::Free(stack_st_X509*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
550
508
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
551
508
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
552
508
        },
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_NAME, void>::Free(stack_st_X509_NAME*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_ACCESS_DESCRIPTION, void>::Free(stack_st_ACCESS_DESCRIPTION*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
553
5.77k
        nullptr);
554
5.77k
  }
bssl::internal::DeleterImpl<stack_st_CRYPTO_BUFFER, void>::Free(stack_st_CRYPTO_BUFFER*)
Line
Count
Source
544
1.99k
  static void Free(Stack *sk) {
545
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
546
    // access it from C++ here.
547
1.99k
    using Type = typename StackTraits<Stack>::Type;
548
1.99k
    OPENSSL_sk_pop_free_ex(
549
1.99k
        reinterpret_cast<OPENSSL_STACK *>(sk),
550
1.99k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
551
1.99k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
552
1.99k
        },
553
1.99k
        nullptr);
554
1.99k
  }
bssl::internal::DeleterImpl<stack_st_X509, void>::Free(stack_st_X509*)
Line
Count
Source
544
3.78k
  static void Free(Stack *sk) {
545
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
546
    // access it from C++ here.
547
3.78k
    using Type = typename StackTraits<Stack>::Type;
548
3.78k
    OPENSSL_sk_pop_free_ex(
549
3.78k
        reinterpret_cast<OPENSSL_STACK *>(sk),
550
3.78k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
551
3.78k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
552
3.78k
        },
553
3.78k
        nullptr);
554
3.78k
  }
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_NAME, void>::Free(stack_st_X509_NAME*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_ACCESS_DESCRIPTION, void>::Free(stack_st_ACCESS_DESCRIPTION*)
555
};
556
557
template <typename Stack>
558
class StackIteratorImpl {
559
 public:
560
  using Type = typename StackTraits<Stack>::Type;
561
  // Iterators must be default-constructable.
562
  StackIteratorImpl() : sk_(nullptr), idx_(0) {}
563
4.84k
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::StackIteratorImpl(stack_st_SRTP_PROTECTION_PROFILE const*, unsigned long)
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::StackIteratorImpl(stack_st_SSL_CIPHER const*, unsigned long)
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::StackIteratorImpl(stack_st_CRYPTO_BUFFER const*, unsigned long)
Line
Count
Source
563
4.84k
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509>::StackIteratorImpl(stack_st_X509 const*, unsigned long)
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::StackIteratorImpl(stack_st_X509_NAME const*, unsigned long)
564
565
2.80k
  bool operator==(StackIteratorImpl other) const {
566
2.80k
    return sk_ == other.sk_ && idx_ == other.idx_;
567
2.80k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator==(bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator==(bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>) const
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator==(bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>) const
Line
Count
Source
565
2.80k
  bool operator==(StackIteratorImpl other) const {
566
2.80k
    return sk_ == other.sk_ && idx_ == other.idx_;
567
2.80k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509>::operator==(bssl::internal::StackIteratorImpl<stack_st_X509>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator==(bssl::internal::StackIteratorImpl<stack_st_X509_NAME>) const
568
2.80k
  bool operator!=(StackIteratorImpl other) const {
569
2.80k
    return !(*this == other);
570
2.80k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator!=(bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator!=(bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>) const
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator!=(bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>) const
Line
Count
Source
568
2.80k
  bool operator!=(StackIteratorImpl other) const {
569
2.80k
    return !(*this == other);
570
2.80k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509>::operator!=(bssl::internal::StackIteratorImpl<stack_st_X509>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator!=(bssl::internal::StackIteratorImpl<stack_st_X509_NAME>) const
571
572
2.27k
  Type *operator*() const {
573
2.27k
    return reinterpret_cast<Type *>(
574
2.27k
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
575
2.27k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator*() const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator*() const
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator*() const
Line
Count
Source
572
2.27k
  Type *operator*() const {
573
2.27k
    return reinterpret_cast<Type *>(
574
2.27k
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
575
2.27k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509>::operator*() const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator*() const
576
577
381
  StackIteratorImpl &operator++(/* prefix */) {
578
381
    idx_++;
579
381
    return *this;
580
381
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator++()
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator++()
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator++()
Line
Count
Source
577
381
  StackIteratorImpl &operator++(/* prefix */) {
578
381
    idx_++;
579
381
    return *this;
580
381
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509>::operator++()
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator++()
581
582
  StackIteratorImpl operator++(int /* postfix */) {
583
    StackIteratorImpl copy(*this);
584
    ++(*this);
585
    return copy;
586
  }
587
588
 private:
589
  const Stack *sk_;
590
  size_t idx_;
591
};
592
593
template <typename Stack>
594
using StackIterator =
595
    std::enable_if_t<StackTraits<Stack>::kIsStack, StackIteratorImpl<Stack>>;
596
597
}  // namespace internal
598
599
// PushToStack pushes |elem| to |sk|. It returns true on success and false on
600
// allocation failure.
601
template <typename Stack>
602
inline std::enable_if_t<!internal::StackTraits<Stack>::kIsConst, bool>
603
PushToStack(Stack *sk,
604
80.5k
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
605
80.5k
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
606
0
    return false;
607
0
  }
608
  // OPENSSL_sk_push takes ownership on success.
609
80.5k
  elem.release();
610
80.5k
  return true;
611
80.5k
}
_ZN4bssl11PushToStackI22stack_st_CRYPTO_BUFFEREENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Line
Count
Source
604
79.9k
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
605
79.9k
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
606
0
    return false;
607
0
  }
608
  // OPENSSL_sk_push takes ownership on success.
609
79.9k
  elem.release();
610
79.9k
  return true;
611
79.9k
}
_ZN4bssl11PushToStackI13stack_st_X509EENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Line
Count
Source
604
582
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
605
582
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
606
0
    return false;
607
0
  }
608
  // OPENSSL_sk_push takes ownership on success.
609
582
  elem.release();
610
582
  return true;
611
582
}
Unexecuted instantiation: _ZN4bssl11PushToStackI18stack_st_X509_NAMEEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI20stack_st_ASN1_OBJECTEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI27stack_st_ACCESS_DESCRIPTIONEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
612
613
BSSL_NAMESPACE_END
614
615
// Define begin() and end() for stack types so C++ range for loops work.
616
template <typename Stack>
617
2.42k
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
618
2.42k
  return bssl::internal::StackIterator<Stack>(sk, 0);
619
2.42k
}
Unexecuted instantiation: _Z5beginI32stack_st_SRTP_PROTECTION_PROFILEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z5beginI19stack_st_SSL_CIPHERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
_Z5beginI22stack_st_CRYPTO_BUFFERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
617
2.42k
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
618
2.42k
  return bssl::internal::StackIterator<Stack>(sk, 0);
619
2.42k
}
Unexecuted instantiation: _Z5beginI13stack_st_X509ENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z5beginI18stack_st_X509_NAMEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
620
621
template <typename Stack>
622
2.42k
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
623
2.42k
  return bssl::internal::StackIterator<Stack>(
624
2.42k
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
625
2.42k
}
Unexecuted instantiation: _Z3endI32stack_st_SRTP_PROTECTION_PROFILEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z3endI19stack_st_SSL_CIPHERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
_Z3endI22stack_st_CRYPTO_BUFFERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
622
2.42k
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
623
2.42k
  return bssl::internal::StackIterator<Stack>(
624
2.42k
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
625
2.42k
}
Unexecuted instantiation: _Z3endI13stack_st_X509ENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z3endI18stack_st_X509_NAMEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
626
627
}  // extern C++
628
#endif
629
630
#endif  // OPENSSL_HEADER_STACK_H