summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2010-08-29 22:35:41 +0000
committerGreg Hudson <ghudson@mit.edu>2010-08-29 22:35:41 +0000
commita6ec2a75d7815d121d8c44cbdb0b3c028417aa4c (patch)
treeed2ab944496bbcd2c81ea90872a5af64bcd7cc10 /src
parentaeb22f78a42119ba75252039af555eb643545813 (diff)
downloadkrb5-a6ec2a75d7815d121d8c44cbdb0b3c028417aa4c.tar.gz
krb5-a6ec2a75d7815d121d8c44cbdb0b3c028417aa4c.tar.xz
krb5-a6ec2a75d7815d121d8c44cbdb0b3c028417aa4c.zip
Fix a resource leak in the profile include support
ticket: 6761 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24274 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/util/profile/prof_parse.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/util/profile/prof_parse.c b/src/util/profile/prof_parse.c
index 7f3d4c9d4..85bd91227 100644
--- a/src/util/profile/prof_parse.c
+++ b/src/util/profile/prof_parse.c
@@ -241,7 +241,7 @@ static errcode_t parse_include_dir(char *dirname, struct parse_state *state)
{
DIR *dir;
char *pathname;
- errcode_t retval;
+ errcode_t retval = 0;
struct dirent *ent;
dir = opendir(dirname);
@@ -250,14 +250,17 @@ static errcode_t parse_include_dir(char *dirname, struct parse_state *state)
while ((ent = readdir(dir)) != NULL) {
if (!valid_name(ent->d_name))
continue;
- if (asprintf(&pathname, "%s/%s", dirname, ent->d_name) < 0)
- return ENOMEM;
+ if (asprintf(&pathname, "%s/%s", dirname, ent->d_name) < 0) {
+ retval = ENOMEM;
+ break;
+ }
retval = parse_include_file(pathname, state);
free(pathname);
if (retval)
- return retval;
+ break;
}
- return 0;
+ closedir(dir);
+ return retval;
}
static errcode_t parse_line(char *line, struct parse_state *state)