Git init
[framework/appfw/aul-1.git] / launchpad_src / access_control.h
1 /*
2  *  aul
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>, Jaeho Lee <jaeho81.lee@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22
23 #ifdef DAC_ACTIVATE
24
25 #include <sys/types.h>
26 #include <sys/xattr.h>
27 #include <sys/stat.h>
28 #include <fcntl.h>
29 #include <privilege-control.h>
30
31 #define INHOUSE_UID     5000
32 #define LABEL_LEN               23
33
34 static inline void __dac_init()
35 {
36 }
37
38 static inline int __set_dac(const char *pkg_name)
39 {
40         return set_privilege(pkg_name);
41 }
42
43 static inline int __set_smack(char* path)
44 {
45 /*
46  * This is additional option.
47  * Though such a application fails in this function, that error is ignored.
48  */
49         char label[LABEL_LEN + 1] = {0, };
50         int fd = 0;
51         int result = -1;
52
53         result = getxattr(path, "security.SMACK64EXEC", label, LABEL_LEN);
54         if(result < 0)  // fail to get extended attribute
55                 return 0;       // ignore error
56
57         fd = open("/proc/self/attr/current", O_RDWR);
58         if(fd < 0)              // fail to open file
59                 return 0;       // ignore error
60
61         result = write(fd, label, strlen(label));
62         if(result < 0) {        // fail to write label
63                 close(fd);
64                 return 0;       // ignore error
65         }
66
67         close(fd);
68         return 0;
69 }
70
71 #else
72 static inline void __dac_init()
73 {
74 }
75
76 static inline int __set_dac(const char *pkg_name)
77 {
78         return 0;
79 }
80
81 static inline int __set_smack(char* path)
82 {
83         return 0;
84 }
85 #endif
86
87