| Index: openssl/crypto/store/str_mem.c
|
| ===================================================================
|
| --- openssl/crypto/store/str_mem.c (revision 105093)
|
| +++ openssl/crypto/store/str_mem.c (working copy)
|
| @@ -76,30 +76,35 @@
|
| attribute type code).
|
| */
|
|
|
| -struct mem_object_data_st
|
| +typedef struct mem_object_data_st
|
| {
|
| STORE_OBJECT *object;
|
| STORE_ATTR_INFO *attr_info;
|
| int references;
|
| - };
|
| + } MEM_OBJECT_DATA;
|
|
|
| +DECLARE_STACK_OF(MEM_OBJECT_DATA)
|
| struct mem_data_st
|
| {
|
| - STACK *data; /* A stack of mem_object_data_st,
|
| - sorted with STORE_ATTR_INFO_compare(). */
|
| + STACK_OF(MEM_OBJECT_DATA) *data; /* sorted with
|
| + * STORE_ATTR_INFO_compare(). */
|
| unsigned int compute_components : 1; /* Currently unused, but can
|
| be used to add attributes
|
| from parts of the data. */
|
| };
|
|
|
| +DECLARE_STACK_OF(STORE_ATTR_INFO)
|
| struct mem_ctx_st
|
| {
|
| int type; /* The type we're searching for */
|
| - STACK *search_attributes; /* Sets of attributes to search for.
|
| - Each element is a STORE_ATTR_INFO. */
|
| - int search_index; /* which of the search attributes we found a match
|
| - for, -1 when we still haven't found any */
|
| - int index; /* -1 as long as we're searching for the first */
|
| + STACK_OF(STORE_ATTR_INFO) *search_attributes; /* Sets of
|
| + attributes to search for. Each
|
| + element is a STORE_ATTR_INFO. */
|
| + int search_index; /* which of the search attributes we
|
| + found a match for, -1 when we still
|
| + haven't found any */
|
| + int index; /* -1 as long as we're searching for
|
| + the first */
|
| };
|
|
|
| static int mem_init(STORE *s);
|
| @@ -240,7 +245,7 @@
|
| if (context->search_attributes == NULL)
|
| {
|
| context->search_attributes =
|
| - sk_new((int (*)(const char * const *, const char * const *))STORE_ATTR_INFO_compare);
|
| + sk_STORE_ATTR_INFO_new(STORE_ATTR_INFO_compare);
|
| if (!context->search_attributes)
|
| {
|
| STOREerr(STORE_F_MEM_LIST_START,
|
| @@ -248,7 +253,7 @@
|
| goto err;
|
| }
|
| }
|
| - sk_push(context->search_attributes,(char *)attrs);
|
| + sk_STORE_ATTR_INFO_push(context->search_attributes,attrs);
|
| }
|
| if (!STORE_parse_attrs_endp(attribute_context))
|
| goto err;
|
| @@ -284,11 +289,14 @@
|
|
|
| if (context->search_index == -1)
|
| {
|
| - for (i = 0; i < sk_num(context->search_attributes); i++)
|
| + for (i = 0;
|
| + i < sk_STORE_ATTR_INFO_num(context->search_attributes);
|
| + i++)
|
| {
|
| - key.attr_info =
|
| - (STORE_ATTR_INFO *)sk_value(context->search_attributes, i);
|
| - srch = sk_find_ex(store->data, (char *)&key);
|
| + key.attr_info
|
| + = sk_STORE_ATTR_INFO_value(context->search_attributes,
|
| + i);
|
| + srch = sk_MEM_OBJECT_DATA_find_ex(store->data, &key);
|
|
|
| if (srch >= 0)
|
| {
|
| @@ -301,21 +309,20 @@
|
| return NULL;
|
|
|
| key.attr_info =
|
| - (STORE_ATTR_INFO *)sk_value(context->search_attributes,
|
| - context->search_index);
|
| + sk_STORE_ATTR_INFO_value(context->search_attributes,
|
| + context->search_index);
|
| for(srch = context->search_index;
|
| - srch < sk_num(store->data)
|
| + srch < sk_MEM_OBJECT_DATA_num(store->data)
|
| && STORE_ATTR_INFO_in_range(key.attr_info,
|
| - (STORE_ATTR_INFO *)sk_value(store->data, srch))
|
| + sk_MEM_OBJECT_DATA_value(store->data, srch)->attr_info)
|
| && !(cres = STORE_ATTR_INFO_in_ex(key.attr_info,
|
| - (STORE_ATTR_INFO *)sk_value(store->data, srch)));
|
| + sk_MEM_OBJECT_DATA_value(store->data, srch)->attr_info));
|
| srch++)
|
| ;
|
|
|
| context->search_index = srch;
|
| if (cres)
|
| - return ((struct mem_object_data_st *)sk_value(store->data,
|
| - srch))->object;
|
| + return (sk_MEM_OBJECT_DATA_value(store->data, srch))->object;
|
| return NULL;
|
| }
|
| static int mem_list_end(STORE *s, void *handle)
|
| @@ -328,7 +335,7 @@
|
| return 0;
|
| }
|
| if (context && context->search_attributes)
|
| - sk_free(context->search_attributes);
|
| + sk_STORE_ATTR_INFO_free(context->search_attributes);
|
| if (context) OPENSSL_free(context);
|
| return 1;
|
| }
|
| @@ -337,7 +344,8 @@
|
| struct mem_ctx_st *context = (struct mem_ctx_st *)handle;
|
|
|
| if (!context
|
| - || context->search_index == sk_num(context->search_attributes))
|
| + || context->search_index
|
| + == sk_STORE_ATTR_INFO_num(context->search_attributes))
|
| return 1;
|
| return 0;
|
| }
|
|
|