Apply * label to C-Channel socket
[platform/framework/native/channel-service.git] / src / FIo_ChannelCAppStub.cpp
index f10b044..a904456 100644 (file)
@@ -36,6 +36,8 @@
 #include <sys/un.h>
 #include <errno.h>
 
+#include <sys/smack.h>
+
 #include <FBase_StringConverter.h>
 #include <FBaseDataType.h>
 #include <FBaseLong.h>
@@ -156,6 +158,19 @@ _ChannelCAppStub::Construct(void)
        SysTryReturnResult(NID_IO, serverSocket != -1, E_SYSTEM,
                        "Failed to create a socket.");
 
+       // SMACK (Add a * label to socket)
+       if(smack_fsetlabel(serverSocket, "@", SMACK_LABEL_IPOUT) != 0)
+       {
+               SysTryCatch(NID_IO, errno == EOPNOTSUPP, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] SMACK labeling failed");
+               SysLog(NID_IO, "Kernel doesn't have Smack.");
+       }
+
+       if(smack_fsetlabel(serverSocket, "*", SMACK_LABEL_IPIN) != 0)
+       {
+               SysTryCatch(NID_IO, errno == EOPNOTSUPP, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] SMACK labeling failed");
+               SysLog(NID_IO, "Kernel doesn't have Smack.");
+       }
+
        bzero(&serverAddress, sizeof(serverAddress));
        serverAddress.sun_family = AF_UNIX;
        strncpy(serverAddress.sun_path, pSocketName, socketNameLength);