]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: Keyring no longer segfaults if HOME env variable is unset.
authorGreg Farnum <gregf@hq.newdream.net>
Fri, 26 Mar 2010 22:57:14 +0000 (15:57 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Mon, 29 Mar 2010 18:49:11 +0000 (11:49 -0700)
Just skip that path, instead. We can't recover what it meant.

src/auth/KeyRing.cc

index a64d238fafd559eec800e7df0875f81d15ea42c8..481c73763e6dbf5189b6e02b4a99719948fb46cc 100644 (file)
@@ -41,8 +41,12 @@ bool KeyRing::load(const char *filename_list)
   for (list<string>::iterator p = ls.begin(); p != ls.end(); p++) {
     // subst in home dir?
     size_t pos = p->find("~/");
-    if (pos != string::npos)
-      p->replace(pos, 1, getenv("HOME"));
+    if (pos != string::npos) {
+      const char *home = getenv("HOME");
+      if (home)
+       p->replace(pos, 1, getenv("HOME"));
+      else break; //skip, we couldn't correct it
+    }
 
     if (bl.read_file(p->c_str(), true) == 0) {
       loaded = true;