return X509v3_get_ext(x->crl.extensions, loc);
}
-X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc)
+static X509_EXTENSION *delete_ext(STACK_OF(X509_EXTENSION) **sk, int loc)
{
- X509_EXTENSION *ret = X509v3_delete_ext(x->crl.extensions, loc);
+ X509_EXTENSION *ret = X509v3_delete_ext(*sk, loc);
/* Empty extension lists are omitted. */
- if (x->crl.extensions != NULL &&
- sk_X509_EXTENSION_num(x->crl.extensions) == 0) {
- sk_X509_EXTENSION_pop_free(x->crl.extensions, X509_EXTENSION_free);
- x->crl.extensions = NULL;
+ if (*sk != NULL && sk_X509_EXTENSION_num(*sk) == 0) {
+ sk_X509_EXTENSION_pop_free(*sk, X509_EXTENSION_free);
+ *sk = NULL;
}
return ret;
}
+X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc)
+{
+ return delete_ext(&x->crl.extensions, loc);
+}
+
void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx)
{
return X509V3_get_d2i(x->crl.extensions, nid, crit, idx);
X509_EXTENSION *X509_delete_ext(X509 *x, int loc)
{
- X509_EXTENSION *ret = X509v3_delete_ext(x->cert_info.extensions, loc);
-
- /* Empty extension lists are omitted. */
- if (x->cert_info.extensions != NULL &&
- sk_X509_EXTENSION_num(x->cert_info.extensions) == 0) {
- sk_X509_EXTENSION_pop_free(x->cert_info.extensions,
- X509_EXTENSION_free);
- x->cert_info.extensions = NULL;
- }
- return ret;
+ return delete_ext(&x->cert_info.extensions, loc);
}
int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc)
X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc)
{
- X509_EXTENSION *ret = X509v3_delete_ext(x->extensions, loc);
-
- /* Empty extension lists are omitted. */
- if (x->extensions != NULL &&
- sk_X509_EXTENSION_num(x->extensions) == 0) {
- sk_X509_EXTENSION_pop_free(x->extensions, X509_EXTENSION_free);
- x->extensions = NULL;
- }
- return ret;
+ return delete_ext(&x->extensions, loc);
}
int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc)