From 00b2c41e0b1eff0210aa2495a4eed2dbf017a7e5 Mon Sep 17 00:00:00 2001 From: panchengzhong <1144372483@qq.com> Date: Thu, 22 Sep 2022 17:24:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=A1=E9=AA=8CprocessName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: panchengzhong <1144372483@qq.com> --- appspawn.cfg | 3 ++- src/appspawn_server.cpp | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/appspawn.cfg b/appspawn.cfg index dc40635f..886e49d5 100755 --- a/appspawn.cfg +++ b/appspawn.cfg @@ -8,7 +8,8 @@ ], "services" : [{ "name" : "appspawn", - "path" : ["/system/bin/appspawn"], + "path" : ["/system/bin/appspawn", + "--process-name com.ohos.appspawn.startup --start-mode daemon --type standard"], "importance" : -20, "uid" : "root", "gid" : ["root"] diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp index 2c8e7d11..28ca4760 100644 --- a/src/appspawn_server.cpp +++ b/src/appspawn_server.cpp @@ -268,7 +268,7 @@ int32_t AppSpawnServer::SetProcessName( } // set long process name - if (strncpy_s(longProcName, len, processName, len) != EOK) { + if (strncpy_s(longProcName, longProcNameLen, processName, len) != EOK) { HiLog::Error(LABEL, "strncpy_s long name error: %{public}d", strerror_r(errno, err_string, ERR_STRING_SZ)); return -EINVAL; } @@ -489,6 +489,17 @@ int32_t AppSpawnServer::SetKeepCapabilities(uint32_t uid) return ERR_OK; } +static int CheckProcessName(const std::string &processName) +{ + if (processName.empty() || processName.size() > ClientSocket::LEN_PROC_NAME) { + return -1; + } + if (processName.find('\\') != std::string::npos || processName.find('/') != std::string::npos) { + return -1; + } + return 0; +} + bool AppSpawnServer::CheckAppProperty(const ClientSocket::AppProperty *appProperty) { if (appProperty == nullptr) { @@ -501,8 +512,8 @@ bool AppSpawnServer::CheckAppProperty(const ClientSocket::AppProperty *appProper return false; } - if (strlen(appProperty->processName) == 0) { - HiLog::Error(LABEL, "process name length is 0"); + if (CheckProcessName(appProperty->processName) != 0) { + HiLog::Error(LABEL, "process name error"); return false; } -- Gitee