diff --git a/lib/dns/sec/openssl/a_object.c b/lib/dns/sec/openssl/a_object.c index ff6b08fafa..fb10f5bfc4 100644 --- a/lib/dns/sec/openssl/a_object.c +++ b/lib/dns/sec/openssl/a_object.c @@ -275,8 +275,16 @@ void ASN1_OBJECT_free(ASN1_OBJECT *a) if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) { #ifndef CONST_STRICT /* disable purely for compile-time strict const checking. Doing this on a "real" compile will cause memory leaks */ - if (a->sn != NULL) Free((void *)a->sn); - if (a->ln != NULL) Free((void *)a->ln); + union { const void *k; void *v; } u; + + if (a->sn != NULL) { + u.k = a->sn; + Free(u.v); + } + if (a->ln != NULL) { + u.k = a->ln; + Free(u.v); + } #endif a->sn=a->ln=NULL; } diff --git a/lib/dns/sec/openssl/include/openssl/safestack.h b/lib/dns/sec/openssl/include/openssl/safestack.h index ea4f0c5c11..caefab7fa5 100644 --- a/lib/dns/sec/openssl/include/openssl/safestack.h +++ b/lib/dns/sec/openssl/include/openssl/safestack.h @@ -95,7 +95,7 @@ void sk_##type##_free(STACK_OF(type) *sk) \ int sk_##type##_num(const STACK_OF(type) *sk) \ { return M_sk_num((const STACK *)sk); } \ type *sk_##type##_value(const STACK_OF(type) *sk,int n) \ - { return (type *)sk_value((STACK *)sk,n); } \ + { return (type *)sk_value((const STACK *)sk,n); } \ type *sk_##type##_set(STACK_OF(type) *sk,int n,type *v) \ { return (type *)(sk_set((STACK *)sk,n,(char *)v)); } \ void sk_##type##_zero(STACK_OF(type) *sk) \ diff --git a/lib/dns/sec/openssl/include/openssl/stack.h b/lib/dns/sec/openssl/include/openssl/stack.h index 04390a730c..a0f31f53c1 100644 --- a/lib/dns/sec/openssl/include/openssl/stack.h +++ b/lib/dns/sec/openssl/include/openssl/stack.h @@ -80,7 +80,7 @@ typedef struct stack_st #define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL) int sk_num(STACK *); -char *sk_value(STACK *, int); +char *sk_value(const STACK *, int); char *sk_set(STACK *, int, char *); diff --git a/lib/dns/sec/openssl/stack.c b/lib/dns/sec/openssl/stack.c index ccc59aca23..86be8ec4b4 100644 --- a/lib/dns/sec/openssl/stack.c +++ b/lib/dns/sec/openssl/stack.c @@ -289,7 +289,7 @@ int sk_num(STACK *st) return st->num; } -char *sk_value(STACK *st, int i) +char *sk_value(const STACK *st, int i) { if(st == NULL) return NULL; return st->data[i];