From c8b1b89fb991ecdc75d1bd41114b81dcd372f0f1 Mon Sep 17 00:00:00 2001 From: sun_fan Date: Mon, 13 Sep 2021 22:09:16 +0800 Subject: [PATCH] init: fix param Signed-off-by: sun_fan --- .../param/watcher/proxy/watcher_manager.cpp | 4 +- services/src/init_cmds.c | 46 +++++++++++-------- services/src/init_reboot.c | 6 +-- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/services/param/watcher/proxy/watcher_manager.cpp b/services/param/watcher/proxy/watcher_manager.cpp index 12aa136d..ddc7b539 100755 --- a/services/param/watcher/proxy/watcher_manager.cpp +++ b/services/param/watcher/proxy/watcher_manager.cpp @@ -221,9 +221,9 @@ void WatcherManager::RunLoop() continue; } fd = GetServerFd(true); - PARAM_LOGE("Failed to recv msg from server %d errno %d", recvLen, errno); + PARAM_LOGE("Failed to recv msg from server errno %d", errno); } - PARAM_LOGD("Recv msg from server %d", recvLen); + PARAM_LOGD("Recv msg from server"); if (recvLen >= (ssize_t)sizeof(ParamMessage)) { ProcessWatcherMessage(buffer, recvLen); } diff --git a/services/src/init_cmds.c b/services/src/init_cmds.c index 22ab920c..04732110 100644 --- a/services/src/init_cmds.c +++ b/services/src/init_cmds.c @@ -484,6 +484,27 @@ static void DoChown(const char *cmdContent, int maxArg) return; } +static int DoPathChown(const char *path, const char *uid, const char *gid) +{ + if (path == NULL || uid == NULL || gid == NULL) { + return -1; + } + uid_t user = DecodeUid(uid); + gid_t group = DecodeUid(gid); + if (user == (uid_t) -1 || group == (uid_t)-1) { + INIT_LOGE("Change path owner with invalid user/group"); + return -1; + } + + int rc = chown(path, user, group); + if (rc < 0) { + INIT_LOGE("Change path \" %s \" ower to user: %s group: %s failed", + path, uid, gid); + return -1; + } + return 0; +} + static void DoMkDir(const char *cmdContent, int maxArg) { // mkdir support format: @@ -513,26 +534,11 @@ static void DoMkDir(const char *cmdContent, int maxArg) INIT_LOGE("Change path \" %s \" mode to %04o failed", ctx->argv[0], mode); break; } - if (ctx->argv[++index] != NULL) { // mkdir with user and group - if (ctx->argv[index + 1] != NULL) { - uid_t user = DecodeUid(ctx->argv[index]); - gid_t group = DecodeUid(ctx->argv[index + 1]); - if (user == (uid_t) -1 || group == (uid_t)-1) { - INIT_LOGE("Change path owner with invalid user/group"); - rc = -1; - break; - } - - rc = chown(ctx->argv[0], user, group); - if (rc < 0) { - INIT_LOGE("Change path \" %s \" ower to user: %s group: %s failed", - ctx->argv[0], ctx->argv[index], ctx->argv[index + 1]); - break; - } - } else { - rc = -1; // Miss group - break; - } + index = index + 1; + if ((ctx->argv[index] != NULL) && (ctx->argv[index + 1] != NULL)) { + rc = DoPathChown(ctx->argv[0], ctx->argv[index], ctx->argv[index + 1]); + } else { + rc = -1; } } if (rc < 0) { diff --git a/services/src/init_reboot.c b/services/src/init_reboot.c index 5c9bc9a2..f5242776 100644 --- a/services/src/init_reboot.c +++ b/services/src/init_reboot.c @@ -185,7 +185,6 @@ void DoReboot(const char *value) return; } } - StopAllServicesBeforeReboot(); sync(); if (GetMountStatusForMountPoint("/vendor") != 0 && umount("/vendor") != 0) { @@ -194,9 +193,6 @@ void DoReboot(const char *value) if (GetMountStatusForMountPoint("/data") != 0 && umount("/data") != 0) { INIT_LOGE("DoReboot umount data failed! errno = %d.", errno); } - - INIT_LOGI("DoReboot value = %s valueData %s", value, valueData); - // "shutdown" int ret = 0; if (valueData == NULL) { ret = reboot(RB_AUTOBOOT); @@ -209,6 +205,6 @@ void DoReboot(const char *value) } else if (strncmp(valueData, "flashing", strlen("flashing")) == 0) { ret = CheckAndRebootToUpdater(valueData, "flashing", "flashing:", "boot_flashing"); } - INIT_LOGE("DoReboot value = %s %s.", value, (ret == 0) ? "success" : "fail"); + INIT_LOGI("DoReboot value = %s %s.", value, (ret == 0) ? "success" : "fail"); return; } -- GitLab