auth: initKeys before first error exit path
authorJeffrey Altman <jaltman@your-file-system.com>
Wed, 16 Nov 2011 05:29:34 +0000 (00:29 -0500)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 16 Nov 2011 17:12:22 +0000 (09:12 -0800)
In afsconf_OpenInternal() _afsconf_InitKeys() must be called
before the first opportunity to call afsconf_CloseInternal()
or a crash can occur if the CellServDB file cannot be parsed.

Change-Id: I5b2487056a24d0c4ad78921d85df755758c7679e
Reviewed-on: http://gerrit.openafs.org/6059
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

src/auth/cellconfig.c

index 46e1c73..b01ac45 100644 (file)
@@ -659,6 +659,9 @@ afsconf_OpenInternal(struct afsconf_dir *adir, char *cell,
        return -1;
     }
 
+    /* init the keys queue before any call to afsconf_CloseInternal() */
+    _afsconf_InitKeys(adir);
+
     /* The CellServDB file is now open.
      * The following code parses the contents of the
      * file and creates a list with the first cell entry
@@ -810,9 +813,8 @@ afsconf_OpenInternal(struct afsconf_dir *adir, char *cell,
 
     if (tf != NULL)
        fclose(tf);
-    /* now read the fs keys, if possible */
 
-    _afsconf_InitKeys(adir);
+    /* now read the fs keys, if possible */
     code = _afsconf_LoadKeys(adir);
 
     return code;