#include "store_local.h"
#include "crypto/context.h"
-int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader)
+static int up_ref_loader(void *method)
{
+ OSSL_STORE_LOADER *loader = (OSSL_STORE_LOADER *)method;
int ref = 0;
if (loader->prov != NULL)
return 1;
}
-void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader)
+static void free_loader(void *method)
{
+ OSSL_STORE_LOADER *loader = (OSSL_STORE_LOADER *)method;
+
if (loader != NULL && loader->prov != NULL) {
int i;
OPENSSL_free(loader);
}
+int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader)
+{
+#ifdef OPENSSL_NO_CACHED_FETCH
+ return up_ref_loader(loader);
+#else
+ return 1;
+#endif
+}
+
+void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader)
+{
+#ifdef OPENSSL_NO_CACHED_FETCH
+ free_loader(loader);
+#endif
+}
+
/*
* OSSL_STORE_LOADER_new() expects the scheme as a constant string,
* which we currently don't have, so we need an alternative allocator.
return loader;
}
-static int up_ref_loader(void *method)
-{
- return OSSL_STORE_LOADER_up_ref(method);
-}
-
-static void free_loader(void *method)
-{
- OSSL_STORE_LOADER_free(method);
-}
-
/* Data to be passed through ossl_method_construct() */
struct loader_data_st {
OSSL_LIB_CTX *libctx;
|| loader->p_eof == NULL
|| loader->p_close == NULL) {
/* Only set_ctx_params is optional */
- OSSL_STORE_LOADER_free(loader);
+ free_loader(loader);
ERR_raise(ERR_LIB_OSSL_STORE, OSSL_STORE_R_LOADER_INCOMPLETE);
return NULL;
}
/* Intermediary function to avoid ugly casts, used below */
static void destruct_loader(void *method, void *data)
{
- OSSL_STORE_LOADER_free(method);
+ free_loader(method);
}
/* Fetching support. Can fetch by numeric identity or by scheme */