Socket won't have any smack label when smack is turn off.
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Wed, 3 Jul 2013 08:17:35 +0000 (10:17 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Thu, 6 Feb 2014 16:13:20 +0000 (17:13 +0100)
[Issue#]   SSDWSSP-68
[Bug]      Security-server does not work without smack.
[Cause]    Smack was mandatory.
[Solution] Add runtime check for smack existance.

[Verfication] Run tests.

Change-Id: I431a2c86a6f110f5c79b3795e07f32e49759cd28

src/server2/main/socket-manager.cpp

index bf460f5..5769c38 100644 (file)
@@ -37,6 +37,7 @@
 #include <dpl/log/log.h>
 #include <dpl/assert.h>
 
+#include <smack-check.h>
 #include <socket-manager.h>
 
 namespace {
@@ -322,11 +323,15 @@ void SocketManager::CreateDomainSocket(
         ThrowMsg(Exception::InitFailed, "Error in socket: " << strerror(err));
     }
 
-    LogInfo("TODO: Set up smack label: " << desc.smackLabel);
+    if (smack_check()) {
+        LogInfo("Set up smack label: " << desc.smackLabel);
 
-    if (0 != smack_fsetlabel(sockfd, desc.smackLabel.c_str(), SMACK_LABEL_IPIN)) {
-        LogError("Error in smack_fsetlabel");
-        ThrowMsg(Exception::InitFailed, "Error in smack_fsetlabel");
+        if (0 != smack_fsetlabel(sockfd, desc.smackLabel.c_str(), SMACK_LABEL_IPIN)) {
+            LogError("Error in smack_fsetlabel");
+            ThrowMsg(Exception::InitFailed, "Error in smack_fsetlabel");
+        }
+    } else {
+        LogInfo("No smack on platform. Socket won't be securied with smack label!");
     }
 
     int flags;