1 /** @example tkt_creds.c
3 * Usage example for krb5_tkt_creds function family
8 func(krb5_context context, krb5_flags options,
9 krb5_ccache ccache, krb5_creds *in_creds,
10 krb5_creds **out_creds)
12 krb5_error_code code = KRB5_OK;
13 krb5_creds *ncreds = NULL;
14 krb5_tkt_creds_context ctx = NULL;
18 /* Allocate a container. */
19 ncreds = k5alloc(sizeof(*ncreds), &code);
23 /* Make and execute a krb5_tkt_creds context to get the credential. */
24 code = krb5_tkt_creds_init(context, ccache, in_creds, options, &ctx);
27 code = krb5_tkt_creds_get(context, ctx);
30 code = krb5_tkt_creds_get_creds(context, ctx, ncreds);
38 krb5_free_creds(context, ncreds);
39 krb5_tkt_creds_free(context, ctx);
43 /* Allocate zeroed memory; set *code to 0 on success or ENOMEM on failure. */
45 k5alloc(size_t len, krb5_error_code *code)
49 /* Allocate at least one byte since zero-byte allocs may return NULL. */
50 ptr = calloc((len > 0) ? len : 1, 1);
51 *code = (ptr == NULL) ? ENOMEM : 0;