afsd: Avoid dir interpolation for memcache
authorAndrew Deason <adeason@sinenomine.net>
Mon, 21 May 2012 22:11:29 +0000 (17:11 -0500)
committerDerrick Brashear <shadow@dementix.org>
Tue, 22 May 2012 00:51:07 +0000 (17:51 -0700)
memcache doesn't make use of fullpn_DCacheFile, fullpn_VolInfoFile,
etc. Do not even try to generate these strings for memcache, since
cacheBaseDir will be NULL, and so this can cause a segfault on some
platforms including Solaris.

Change-Id: I0decdb9a8866272adf500125af7edb03c98e6bdc
Reviewed-on: http://gerrit.openafs.org/7442
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/afsd/afsd.c

index 50e750b..2dcdb49 100644 (file)
@@ -2090,23 +2090,25 @@ afsd_run(void)
               cacheFiles, inode_for_V, (cacheFiles * sizeof(AFSD_INO_T)));
 #endif
 
-    /*
-     * Set up all the pathnames we'll need for later.
-     */
-    sprintf(fullpn_DCacheFile, "%s/%s", cacheBaseDir, DCACHEFILE);
-    sprintf(fullpn_VolInfoFile, "%s/%s", cacheBaseDir, VOLINFOFILE);
-    sprintf(fullpn_CellInfoFile, "%s/%s", cacheBaseDir, CELLINFOFILE);
-    sprintf(fullpn_VFile, "%s/", cacheBaseDir);
-    vFilePtr = fullpn_VFile + strlen(fullpn_VFile);
-
-    if (!(cacheFlags & AFSCALL_INIT_MEMCACHE)
-       && (fsTypeMsg = CheckCacheBaseDir(cacheBaseDir))) {
+    if (!(cacheFlags & AFSCALL_INIT_MEMCACHE)) {
+       /*
+        * Set up all the pathnames we'll need for later.
+        */
+       sprintf(fullpn_DCacheFile, "%s/%s", cacheBaseDir, DCACHEFILE);
+       sprintf(fullpn_VolInfoFile, "%s/%s", cacheBaseDir, VOLINFOFILE);
+       sprintf(fullpn_CellInfoFile, "%s/%s", cacheBaseDir, CELLINFOFILE);
+       sprintf(fullpn_VFile, "%s/", cacheBaseDir);
+       vFilePtr = fullpn_VFile + strlen(fullpn_VFile);
+
+       fsTypeMsg = CheckCacheBaseDir(cacheBaseDir);
+       if (fsTypeMsg) {
 #ifdef AFS_SUN5_ENV
-       printf("%s: WARNING: Cache dir check failed (%s)\n", rn, fsTypeMsg);
+           printf("%s: WARNING: Cache dir check failed (%s)\n", rn, fsTypeMsg);
 #else
-       printf("%s: ERROR: Cache dir check failed (%s)\n", rn, fsTypeMsg);
-       exit(1);
+           printf("%s: ERROR: Cache dir check failed (%s)\n", rn, fsTypeMsg);
+           exit(1);
 #endif
+       }
     }
 
     /*