Apply * label to C-Channel socket
authorSunwook Bae <sunwook45.bae@samsung.com>
Wed, 15 May 2013 08:06:26 +0000 (17:06 +0900)
committerSunwook Bae <sunwook45.bae@samsung.com>
Wed, 15 May 2013 08:06:26 +0000 (17:06 +0900)
Change-Id: I212262248c3d682a1d0d7338aceaa9a450649997
Signed-off-by: Sunwook Bae <sunwook45.bae@samsung.com>
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);