mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Fix some resource leaks identified by a static analyzer
Fixes: https://pagure.io/freeipa/issue/9367 Signed-off-by: Rob Crittenden <rcritten@redhat.com> Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> Reviewed-By: Francisco Trivino <ftrivino@redhat.com>
This commit is contained in:
parent
d0684a7ecf
commit
21c6ccc982
@ -266,6 +266,7 @@ static int ldap_sasl_interact(LDAP *ld, unsigned flags, void *priv_data, void *s
|
|||||||
error_message(krberr), krberr);
|
error_message(krberr), krberr);
|
||||||
in->result = NULL;
|
in->result = NULL;
|
||||||
in->len = 0;
|
in->len = 0;
|
||||||
|
krb5_free_context(krbctx);
|
||||||
ret = LDAP_LOCAL_ERROR;
|
ret = LDAP_LOCAL_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,11 @@
|
|||||||
#include "ipa-client-common.h"
|
#include "ipa-client-common.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
int remove_principal(krb5_context context, krb5_keytab ktid,
|
||||||
|
const char *principal, int debug);
|
||||||
|
int remove_realm(krb5_context context, krb5_keytab ktid,
|
||||||
|
const char *realm, int debug);
|
||||||
|
|
||||||
#define KERBEROS_ERROR 1
|
#define KERBEROS_ERROR 1
|
||||||
#define OOM_ERROR 2
|
#define OOM_ERROR 2
|
||||||
#define KEYTAB_ERROR 3
|
#define KEYTAB_ERROR 3
|
||||||
@ -171,7 +176,8 @@ remove_realm(krb5_context context, krb5_keytab ktid, const char *realm, int debu
|
|||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
krb5_kt_end_seq_get(context, ktid, &kt_cursor);
|
||||||
|
krb5_free_unparsed_name(context, entry_princ_s);
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2066,6 +2066,7 @@ void ipadb_free_principal(krb5_context kcontext, krb5_db_entry *entry)
|
|||||||
for (i = 0; (acl_list != NULL) && (acl_list[i] != NULL); i++) {
|
for (i = 0; (acl_list != NULL) && (acl_list[i] != NULL); i++) {
|
||||||
free(acl_list[i]);
|
free(acl_list[i]);
|
||||||
}
|
}
|
||||||
|
free(acl_list);
|
||||||
}
|
}
|
||||||
free(prev->tl_data_contents);
|
free(prev->tl_data_contents);
|
||||||
free(prev);
|
free(prev);
|
||||||
|
@ -79,6 +79,7 @@ static void on_bind_readable(verto_ctx *vctx, verto_ev *ev)
|
|||||||
struct otpd_queue_item *item = NULL;
|
struct otpd_queue_item *item = NULL;
|
||||||
int i, rslt;
|
int i, rslt;
|
||||||
(void)vctx;
|
(void)vctx;
|
||||||
|
int kerr = 0;
|
||||||
|
|
||||||
rslt = ldap_result(verto_get_private(ev), LDAP_RES_ANY, 0, NULL, &results);
|
rslt = ldap_result(verto_get_private(ev), LDAP_RES_ANY, 0, NULL, &results);
|
||||||
if (rslt != LDAP_RES_BIND) {
|
if (rslt != LDAP_RES_BIND) {
|
||||||
@ -118,6 +119,7 @@ static void on_bind_readable(verto_ctx *vctx, verto_ev *ev)
|
|||||||
krad_code_name2num("Access-Accept"),
|
krad_code_name2num("Access-Accept"),
|
||||||
NULL, item->req, &item->rsp);
|
NULL, item->req, &item->rsp);
|
||||||
if (i != 0) {
|
if (i != 0) {
|
||||||
|
kerr = 1;
|
||||||
errstr = krb5_get_error_message(ctx.kctx, i);
|
errstr = krb5_get_error_message(ctx.kctx, i);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@ -127,6 +129,10 @@ error:
|
|||||||
otpd_log_req(item->req, "bind end: %s",
|
otpd_log_req(item->req, "bind end: %s",
|
||||||
item->rsp != NULL ? "success" : errstr);
|
item->rsp != NULL ? "success" : errstr);
|
||||||
|
|
||||||
|
if (kerr) {
|
||||||
|
krb5_free_error_message(ctx.kctx, errstr);
|
||||||
|
}
|
||||||
|
|
||||||
ldap_msgfree(results);
|
ldap_msgfree(results);
|
||||||
otpd_queue_push(&ctx.stdio.responses, item);
|
otpd_queue_push(&ctx.stdio.responses, item);
|
||||||
verto_set_flags(ctx.stdio.writer, VERTO_EV_FLAG_PERSIST |
|
verto_set_flags(ctx.stdio.writer, VERTO_EV_FLAG_PERSIST |
|
||||||
|
@ -43,10 +43,14 @@ static void forward_cb(krb5_error_code retval, const krad_packet *request,
|
|||||||
NULL, item->req, &item->rsp);
|
NULL, item->req, &item->rsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
otpd_log_req(item->req, "forward end: %s",
|
if (retval == 0) {
|
||||||
retval == 0
|
otpd_log_req(item->req, "forward end: %s", krad_code_num2name(code));
|
||||||
? krad_code_num2name(code)
|
} else {
|
||||||
: krb5_get_error_message(ctx.kctx, retval));
|
const char *err_msg = krb5_get_error_message(ctx.kctx, retval);
|
||||||
|
otpd_log_req(item->req, "forward end: %s",
|
||||||
|
krb5_get_error_message(ctx.kctx, retval));
|
||||||
|
krb5_free_error_message(ctx.kctx, err_msg);
|
||||||
|
}
|
||||||
|
|
||||||
otpd_queue_push(&ctx.stdio.responses, item);
|
otpd_queue_push(&ctx.stdio.responses, item);
|
||||||
verto_set_flags(ctx.stdio.writer, VERTO_EV_FLAG_PERSIST |
|
verto_set_flags(ctx.stdio.writer, VERTO_EV_FLAG_PERSIST |
|
||||||
@ -117,8 +121,10 @@ krb5_error_code otpd_forward(struct otpd_queue_item **item)
|
|||||||
*item = NULL;
|
*item = NULL;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (retval != 0)
|
if (retval != 0) {
|
||||||
otpd_log_req((*item)->req, "forward end: %s",
|
const char *err_msg = krb5_get_error_message(ctx.kctx, retval);
|
||||||
krb5_get_error_message(ctx.kctx, retval));
|
otpd_log_req((*item)->req, "forward end: %s", err_msg);
|
||||||
|
krb5_free_error_message(ctx.kctx, err_msg);
|
||||||
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -904,6 +904,7 @@ static int prep_ksdata(krb5_context krbctx, const char *str,
|
|||||||
ksdata = calloc(n + 1, sizeof(struct krb_key_salt));
|
ksdata = calloc(n + 1, sizeof(struct krb_key_salt));
|
||||||
if (NULL == ksdata) {
|
if (NULL == ksdata) {
|
||||||
*err_msg = _("Out of memory!?\n");
|
*err_msg = _("Out of memory!?\n");
|
||||||
|
ipa_krb5_free_ktypes(krbctx, ktypes);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user