This patch fixes 2 coverity issues: * ipa-client/config.c: CID 11090: Resource leak * ipa-client/ipa-getkeytab.c: CID 11018: Unchecked return value
https://fedorahosted.org/freeipa/ticket/2035
>From 828dc2c448707fc48da97a2254d19db04e76fde2 Mon Sep 17 00:00:00 2001 From: Martin Kosek <mko...@redhat.com> Date: Tue, 8 Nov 2011 17:59:45 +0100 Subject: [PATCH] Fix coverity issues in client CLI tools This patch fixes 2 coverity issues: * ipa-client/config.c: CID 11090: Resource leak * ipa-client/ipa-getkeytab.c: CID 11018: Unchecked return value https://fedorahosted.org/freeipa/ticket/2035 --- ipa-client/config.c | 20 ++++++++++++-------- ipa-client/ipa-getkeytab.c | 10 +++++++++- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/ipa-client/config.c b/ipa-client/config.c index 493d740207ffca4275f512fad97d40e4f1e8fa05..95bd5c285cc785b354386ad41a73960888107af5 100644 --- a/ipa-client/config.c +++ b/ipa-client/config.c @@ -45,28 +45,29 @@ char * read_config_file(const char *filename) { - int fd; + int fd = -1; struct stat st; - char *data, *dest; + char *data = NULL; + char *dest; size_t left; fd = open(filename, O_RDONLY); if (fd == -1) { fprintf(stderr, _("cannot open configuration file %s\n"), filename); - return NULL; + goto error_out; } /* stat() the file so we know the size and can pre-allocate the right * amount of memory. */ if (fstat(fd, &st) == -1) { fprintf(stderr, _("cannot stat() configuration file %s\n"), filename); - return NULL; + goto error_out; } left = st.st_size; data = malloc(st.st_size + 1); if (data == NULL) { fprintf(stderr, _("out of memory\n")); - return NULL; + goto error_out; } dest = data; while (left != 0) { @@ -77,9 +78,7 @@ read_config_file(const char *filename) break; if (res < 0) { fprintf(stderr, _("read error\n")); - close(fd); - free(dest); - return NULL; + goto error_out; } dest += res; left -= res; @@ -87,6 +86,11 @@ read_config_file(const char *filename) close(fd); *dest = 0; return data; + +error_out: + if (fd != -1) close(fd); + if (data) free(data); + return NULL; } char * diff --git a/ipa-client/ipa-getkeytab.c b/ipa-client/ipa-getkeytab.c index 5a521d04127491193e971a00697f3e077796e01e..7218d7c54e527c0ecb92d0706c2310410e994036 100644 --- a/ipa-client/ipa-getkeytab.c +++ b/ipa-client/ipa-getkeytab.c @@ -89,7 +89,15 @@ static int ldap_sasl_interact(LDAP *ld, unsigned flags, void *priv_data, void *s break; } - krb5_unparse_name(krbctx, princ, &outname); + krberr = krb5_unparse_name(krbctx, princ, &outname); + + if (krberr) { + fprintf(stderr, _("Unable to parse principal\n")); + in->result = NULL; + in->len = 0; + ret = LDAP_LOCAL_ERROR; + break; + } in->result = outname; in->len = strlen(outname); -- 1.7.6.4
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel