From a5324a6bb6ff127997c48b54f8ad0e98189f3f1e Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Tue, 26 Feb 2013 22:31:49 +0000 Subject: [PATCH] auth: Refactor afsconf_Open failure handler Refactor the code which returns a failure from afsconf_Open into a single section, rather than having multiple copies through out the routine. Change-Id: I70b3fec98321bf89e6d59055545d5d4193026d28 Reviewed-on: http://gerrit.openafs.org/9293 Tested-by: BuildBot Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman --- src/auth/cellconfig.c | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index 08cc6bedb..cffac984f 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -453,22 +453,17 @@ afsconf_Open(const char *adir) if (!(home_dir = getenv("HOME"))) { /* Our last chance is the "/.AFSCONF" file */ fp = fopen("/.AFSCONF", "r"); - if (fp == 0) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; - } + if (fp == 0) + goto fail; + fgets(afs_confdir, 128, fp); fclose(fp); } else { char *pathname = NULL; asprintf(&pathname, "%s/%s", home_dir, ".AFSCONF"); - if (pathname == NULL) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *) 0; - } + if (pathname == NULL) + goto fail; fp = fopen(pathname, "r"); free(pathname); @@ -476,21 +471,16 @@ afsconf_Open(const char *adir) if (fp == 0) { /* Our last chance is the "/.AFSCONF" file */ fp = fopen("/.AFSCONF", "r"); - if (fp == 0) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; - } + if (fp == 0) + goto fail; } fgets(afs_confdir, 128, fp); fclose(fp); } len = strlen(afs_confdir); - if (len == 0) { - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; - } + if (len == 0) + goto fail; + if (afs_confdir[len - 1] == '\n') { afs_confdir[len - 1] = 0; } @@ -500,13 +490,16 @@ afsconf_Open(const char *adir) code = afsconf_OpenInternal(tdir, 0, 0); if (code) { free(tdir->name); - free(tdir); - UNLOCK_GLOBAL_MUTEX; - return (struct afsconf_dir *)0; + goto fail; } } UNLOCK_GLOBAL_MUTEX; return tdir; + +fail: + free(tdir); + UNLOCK_GLOBAL_MUTEX; + return NULL; } static int -- 2.39.5