daa06c79e0d05d3f01c282dbb2731fa8b9251ba1
[platform/core/appfw/ail.git] / tool / src / createdb_user.c
1 /*
2  * ail
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  * Copyright (C) 2013-2014 Intel Corporation.
6  *
7  * Contact: Sabera Djelti <sabera.djelti@open.eurogiciel.org>,
8  * Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>, Jaeho Lee <jaeho81.lee@samsung.com>
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  *
22  */
23
24 #include <string.h>
25 #include <stdlib.h>
26 #include <stdio.h>
27 #include <dirent.h>
28 #include <unistd.h>
29 #include <sys/stat.h>
30 #include <errno.h>
31 #include <sys/smack.h>
32
33 #include "ail.h"
34 #include "ail_db.h"
35 #include "ail_private.h"
36
37 #ifdef _E
38 #undef _E
39 #endif
40
41 #define _E(fmt, arg...) fprintf(stderr, "[AIL_INITDB][E][%s,%d] "fmt"\n", __FUNCTION__, __LINE__, ##arg);
42
43 #ifdef _D
44 #undef _D
45 #endif
46
47 #define _D(fmt, arg...) fprintf(stderr, "[AIL_INITDB][D][%s,%d] "fmt"\n", __FUNCTION__, __LINE__, ##arg);
48
49 #define SET_DEFAULT_LABEL(x) \
50         do { \
51                 if (smack_setlabel((x), "*", SMACK_LABEL_ACCESS)) \
52                         _E("failed chsmack -a \"*\" %s", x); \
53                 else \
54                         _D("chsmack -a \"*\" %s", x); \
55         } while (0)
56
57 static int __is_authorized(void)
58 {
59         /* ail_init db should be called by an user. */
60         uid_t uid = getuid();
61         if ((uid_t)OWNER_ROOT != uid)
62                 return 1;
63         else
64                 return 0;
65 }
66
67 int main(int argc, char *argv[])
68 {
69         int ret;
70         char *db;
71
72         if (!__is_authorized()) {
73                 fprintf(stderr, "You are not an authorized user!\n");
74                 _E("You are root user! Please switch to a regular user");
75                 return -1;
76         }
77
78         db = ail_get_app_DB(getuid());
79         if (db) {
80                 if (remove(db))
81                         _E("%s is not removed", db);
82
83                 free(db);
84         }
85
86         db = ail_get_app_DB_journal(getuid());
87         if (db) {
88                 if (remove(db))
89                         _E("%s is not removed", db);
90
91                 free(db);
92         }
93
94         ret = setenv("AIL_INITDB", "1", 1);
95         _D("AIL_INITDB : %d", ret);
96
97         if (db_open(DB_OPEN_RW, getuid()) != AIL_ERROR_OK) {
98                 _E("Fail to create system databases");
99                 return AIL_ERROR_DB_FAILED;
100         }
101
102         return AIL_ERROR_OK;
103 }