Blob Blame History Raw
From 6f79da339b3fd946b46932d61f30a117918de7b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@suse.cz>
Date: Tue, 16 Jul 2013 15:46:06 +0200
Subject: [PATCH 2/8] handle $HOME not being set

---
 client/main.cpp |  2 +-
 daemon/main.cpp | 11 ++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/client/main.cpp b/client/main.cpp
index d72ce9d..638dbda 100644
--- a/client/main.cpp
+++ b/client/main.cpp
@@ -335,7 +335,7 @@ int main(int argc, char **argv)
     if (!local_daemon)
         local_daemon = Service::createChannel( "/var/run/iceccd.socket" );
 
-    if (!local_daemon) {
+    if (!local_daemon && getenv("HOME")) {
         string path = getenv("HOME");
         path += "/.iceccd.socket";
         local_daemon = Service::createChannel( path );
diff --git a/daemon/main.cpp b/daemon/main.cpp
index 28ec158..5d7e430 100644
--- a/daemon/main.cpp
+++ b/daemon/main.cpp
@@ -553,9 +553,14 @@ bool Daemon::setup_listen_fds()
         unlink(myaddr.sun_path);
         old_umask = umask(0);
     } else { // Started by user.
-        strncpy(myaddr.sun_path, getenv("HOME"), sizeof(myaddr.sun_path)-1);
-        strncat(myaddr.sun_path, "/.iceccd.socket", sizeof(myaddr.sun_path)-1-strlen(myaddr.sun_path));
-        unlink(myaddr.sun_path);
+        if( getenv( "HOME" )) {
+            strncpy(myaddr.sun_path, getenv("HOME"), sizeof(myaddr.sun_path)-1);
+            strncat(myaddr.sun_path, "/.iceccd.socket", sizeof(myaddr.sun_path)-1-strlen(myaddr.sun_path));
+            unlink(myaddr.sun_path);
+        } else {
+            log_error() << "launched by user, but $HOME not set" << endl;
+            return false;
+        }
     }
 
     if (bind(unix_listen_fd, (struct sockaddr*)&myaddr, sizeof(myaddr)) < 0) {
-- 
1.8.3.1