void KRB5_LIB_FUNCTION krb5_get_init_creds_opt_free(krb5_get_init_creds_opt *opt) { if (opt->opt_private == NULL) return; if (opt->opt_private->refcount < 1) /* abort ? */ return; if (--opt->opt_private->refcount == 0) { _krb5_get_init_creds_opt_free_krb5_error(opt); _krb5_get_init_creds_opt_free_pkinit(opt); free(opt->opt_private); } memset(opt, 0, sizeof(*opt)); free(opt); }
void KRB5_LIB_FUNCTION _krb5_get_init_creds_opt_set_krb5_error(krb5_context context, krb5_get_init_creds_opt *opt, const KRB_ERROR *error) { krb5_error_code ret; if (opt->opt_private == NULL) return; _krb5_get_init_creds_opt_free_krb5_error(opt); opt->opt_private->error = malloc(sizeof(*opt->opt_private->error)); if (opt->opt_private->error == NULL) return; ret = copy_KRB_ERROR(error, opt->opt_private->error); if (ret) { free(opt->opt_private->error); opt->opt_private->error = NULL; } }