diff options
author | Greg Hudson <ghudson@mit.edu> | 2010-08-29 22:35:41 +0000 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2010-08-29 22:35:41 +0000 |
commit | a6ec2a75d7815d121d8c44cbdb0b3c028417aa4c (patch) | |
tree | ed2ab944496bbcd2c81ea90872a5af64bcd7cc10 /src | |
parent | aeb22f78a42119ba75252039af555eb643545813 (diff) | |
download | krb5-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.c | 13 |
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) |