#define LOG_IO_TAG "LOADER"
-#define MAX_APPID 20
+#define MAX_PACKAGE_ID 20
#define MAX_APP_EXECUTABLE_NAME 230
#define MAX_PACKAGE_NAME 100
#define MAX_PR_NAME 16
}
strncpy(appId, p - strlen("bin/") - 10, 10);
- LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, app is %s", appId);
+ LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, package is %s", appId);
return 0;
}
int len = end - begin - 1;
- if (len > MAX_APPID)
+ if (len > MAX_PACKAGE_ID)
{
LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, Improper appname %s with length %d", appName, len);
- len = MAX_APPID;
+ len = MAX_PACKAGE_ID;
//return -1;
}
return 0;
}
-static bool
-GetPackageNameFromAppIdAppExecutableName(const char appId[], const char exeName[], char* pkgName, int maxPkgName)
-{
- // package name is "org.tizen.[appid]#[executable]"
-
- //snprintf(pkgName, maxPkgName, "org.tizen.%s#%s", appId, exeName);
- snprintf(pkgName, maxPkgName, "%s", appId);
-
- LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::App, packageName is %s", pkgName);
-
- return true;
-}
static void
PrintArgs(int argc, char* argv[])
}
}
-static int
-GetDirFdFromPath(const char* pPath)
-{
- int count = 0;
- const int len = strlen(pPath);
- char dname[PATH_MAX];
- memset(dname, 0, PATH_MAX);
-
- const char* p = pPath + len;
- for (int i = 0; i < len; i++, p--)
- {
- if (*p == '/')
- {
- count++;
-
- if (count == 2)
- {
- goto OUT;
- }
- }
- }
-
- LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, %s, %d > Wrong path format : %s.", __func__, __LINE__, pPath);
-
- return -1;
-
-OUT:
- strncpy(dname, pPath, p - pPath);
-
- const int fd = open(dname, O_RDONLY | O_CLOEXEC | O_DIRECTORY);
-
- LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::App, %s, %d > Directory path : %s, fd : %d.", __func__, __LINE__, dname, fd);
-
- return fd;
-}
-
static void
-AdjustHwAccInfo(const char* packageId, const char* execName)
+AdjustHwAccInfo(const char* appId)
{
- char appId[MAX_APPID + MAX_APP_EXECUTABLE_NAME + 2] = {0, };
- strncpy(appId, packageId, 10);
- appId[10] = '.';
- strncpy(appId + 11, execName, MAX_APP_EXECUTABLE_NAME);
-
pkgmgrinfo_appinfo_h appHandle = NULL;
int ret = pkgmgrinfo_appinfo_get_appinfo(appId, &appHandle);
if (ret != PMINFO_R_OK)
{
bool bCommand = false;
- char appId[MAX_APPID];
+ char packageId[MAX_PACKAGE_ID];
char exeName[MAX_APP_EXECUTABLE_NAME];
- char packageName[MAX_PACKAGE_NAME];
char fullPath[PATH_MAX];
- memset(appId, 0, MAX_APPID);
+ memset(packageId, 0, MAX_PACKAGE_ID);
memset(exeName, 0, MAX_APP_EXECUTABLE_NAME);
- memset(packageName, 0, MAX_PACKAGE_NAME);
memset(fullPath, 0, PATH_MAX);
LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, %s, %d > executable binary path: %s", __func__, __LINE__, pArgv[0]);
}
LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, %s, %d > processed binary path: %s", __func__, __LINE__, fullPath);
- // convert package path to appId
- GetAppIdAppExecutableNameFromPath(fullPath, appId, exeName);
- GetPackageNameFromAppIdAppExecutableName(appId, exeName, packageName, MAX_PACKAGE_NAME);
+ // convert package path to packageId
+ GetAppIdAppExecutableNameFromPath(fullPath, packageId, exeName);
+
+ // acquire appId from packageId and exec
+ char appId[MAX_PACKAGE_ID + MAX_APP_EXECUTABLE_NAME + 2] = {0, };
+ strncpy(appId, packageId, 10);
+ appId[10] = '.';
+ strncpy(appId + 11, exeName, MAX_APP_EXECUTABLE_NAME);
+
if (getuid() == 0)
{
// self caging
- DoPreExec(packageName, fullPath);
+ DoPreExec(packageId, fullPath);
// adjust privilege
- AdjustPrivilege(packageName);
+ AdjustPrivilege(packageId);
}
AdjustCapability();
{
ChangeProcessName(fullPath, argc, pArgv);
pArgv[0] = strdup(fullPath);
- }
- int fd = GetDirFdFromPath(pArgv[0]);
- if (fd == -1)
- {
- LOG(LOG_DEBUG, LOG_IO_TAG, "Tizen::Io, %s, %d > Failed to open path [%d][%s].", __func__, __LINE__, getpid(), strerror(errno));
- return -1;
}
// dlopen will load Osp_Initialize() internally as __attribute__((constructor))
//Osp_Initialize();
- InitAppInfo(appId, exeName, argc, pArgv, fd);
+ InitAppInfo(packageId, exeName, argc, pArgv, -1);
- AdjustHwAccInfo(appId, exeName);
+ AdjustHwAccInfo(appId);
int r = OspMain(argc, pArgv);