mirror of
https://github.com/samba-team/samba.git
synced 2025-01-13 13:18:06 +03:00
r21847: Fix memory leaks in error paths (and in main code path in one case...)
in sasl bind. Wonder why coverity didn't find these ? Jeremy.
This commit is contained in:
parent
1e32b44bfc
commit
89bdd30e4b
@ -311,9 +311,9 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
|
||||
int gss_rc, rc;
|
||||
uint8 *p;
|
||||
uint32 max_msg_size = 0;
|
||||
char *sname;
|
||||
char *sname = NULL;
|
||||
ADS_STATUS status;
|
||||
krb5_principal principal;
|
||||
krb5_principal principal = NULL;
|
||||
krb5_context ctx = NULL;
|
||||
krb5_enctype enc_types[] = {
|
||||
#ifdef ENCTYPE_ARCFOUR_HMAC
|
||||
@ -331,24 +331,32 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
|
||||
initialize_krb5_error_table();
|
||||
status = ADS_ERROR_KRB5(krb5_init_context(&ctx));
|
||||
if (!ADS_ERR_OK(status)) {
|
||||
SAFE_FREE(sname);
|
||||
return status;
|
||||
}
|
||||
status = ADS_ERROR_KRB5(krb5_set_default_tgs_ktypes(ctx, enc_types));
|
||||
if (!ADS_ERR_OK(status)) {
|
||||
SAFE_FREE(sname);
|
||||
krb5_free_context(ctx);
|
||||
return status;
|
||||
}
|
||||
status = ADS_ERROR_KRB5(smb_krb5_parse_name(ctx, sname, &principal));
|
||||
if (!ADS_ERR_OK(status)) {
|
||||
SAFE_FREE(sname);
|
||||
krb5_free_context(ctx);
|
||||
return status;
|
||||
}
|
||||
|
||||
free(sname);
|
||||
krb5_free_context(ctx);
|
||||
|
||||
input_name.value = &principal;
|
||||
input_name.length = sizeof(principal);
|
||||
|
||||
gss_rc = gss_import_name(&minor_status, &input_name, &nt_principal, &serv_name);
|
||||
|
||||
/* We've finished with principal and sname now. */
|
||||
SAFE_FREE(sname);
|
||||
krb5_free_principal(ctx, principal);
|
||||
krb5_free_context(ctx);
|
||||
|
||||
if (gss_rc) {
|
||||
return ADS_ERROR_GSS(gss_rc, minor_status);
|
||||
}
|
||||
|
@ -176,6 +176,7 @@ static BOOL make_krb5_skew_error(DATA_BLOB *pblob_out)
|
||||
|
||||
*pblob_out = data_blob(NULL,0);
|
||||
|
||||
initialize_krb5_error_table();
|
||||
kerr = krb5_init_context(&context);
|
||||
if (kerr) {
|
||||
return False;
|
||||
|
Loading…
Reference in New Issue
Block a user