out[j++] = in[i].alg;
}
}
+
+/* Duplicate a lump of memory safely */
+int ossl_prov_memdup(const void *src, size_t src_len,
+ unsigned char **dest, size_t *dest_len)
+{
+ if (src != NULL) {
+ if ((*dest = OPENSSL_memdup(src, src_len)) == NULL) {
+ ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+ *dest_len = src_len;
+ } else {
+ *dest = NULL;
+ *dest_len = 0;
+ }
+ return 1;
+}