From: Andreas Schneider Date: Mon, 13 Jun 2016 08:52:46 +0000 (+0200) Subject: krb5_wrap: Add smb_krb5_mk_error() X-Git-Tag: tdb-1.3.10~797 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8a0b058ceedf4a568e3e5e272eef356abbe9bd08;p=thirdparty%2Fsamba.git krb5_wrap: Add smb_krb5_mk_error() Signed-off-by: Andreas Schneider Reviewed-by: Jeremy Allison --- diff --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c index 3cb1ceebb8b..79e9450f0ee 100644 --- a/lib/krb5_wrap/krb5_samba.c +++ b/lib/krb5_wrap/krb5_samba.c @@ -138,6 +138,43 @@ bool setup_kaddr( krb5_address *pkaddr, struct sockaddr_storage *paddr) #error UNKNOWN_ADDRTYPE #endif +krb5_error_code smb_krb5_mk_error(krb5_context context, + krb5_error_code error_code, + const char *e_text, + krb5_data *e_data, + krb5_data *enc_err) +{ + krb5_error_code code = EINVAL; +#ifdef SAMBA4_USES_HEIMDAL + code = krb5_mk_error(context, + error_code, + e_text, + e_data, + NULL, /* client */ + NULL, /* server */ + NULL, /* client_time */ + NULL, /* client_usec */ + enc_err); +#else + krb5_error dec_err = { + .error = error_code, + }; + + if (e_text != NULL) { + dec_err.text.length = strlen(e_text); + dec_err.text.data = discard_const_p(e_text, char); + } + if (e_data != NULL) { + dec_err.e_data = *e_data; + } + + code = krb5_mk_error(context, + &dec_err, + enc_err); +#endif + return code; +} + /** * @brief Create a keyblock based on input parameters * diff --git a/lib/krb5_wrap/krb5_samba.h b/lib/krb5_wrap/krb5_samba.h index 15da9a1408b..41664f1f84b 100644 --- a/lib/krb5_wrap/krb5_samba.h +++ b/lib/krb5_wrap/krb5_samba.h @@ -145,6 +145,12 @@ void krb5_free_unparsed_name(krb5_context ctx, char *val); /* Samba wrapper functions for krb5 functionality. */ bool setup_kaddr( krb5_address *pkaddr, struct sockaddr_storage *paddr); +krb5_error_code smb_krb5_mk_error(krb5_context context, + krb5_error_code error_code, + const char *e_text, + krb5_data *e_data, + krb5_data *enc_err); + krb5_error_code get_kerberos_allowed_etypes(krb5_context context, krb5_enctype **enctypes); bool get_krb5_smb_session_key(TALLOC_CTX *mem_ctx, krb5_context context,