From 7db28cccdd1ad6fa279a77e072447a41842cb69b Mon Sep 17 00:00:00 2001 From: heppen Date: Tue, 4 Jun 2024 16:00:45 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(proc):=20pstree=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=89=80=E6=9C=89=E7=94=A8=E6=88=B7=E6=80=81=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E6=80=A7=E8=83=BD=E5=B7=AE=EF=BC=8C=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E9=A3=8E=E9=99=A9=E8=BE=83=E5=A4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pwrapis/src/procservice.c | 4 +--- pwrapis/src/server.c | 8 +++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pwrapis/src/procservice.c b/pwrapis/src/procservice.c index 2a2467f..2a23cc9 100644 --- a/pwrapis/src/procservice.c +++ b/pwrapis/src/procservice.c @@ -22,9 +22,7 @@ #include "utils.h" #include "cpuservice.h" -#define GET_US_PROCS_CMD \ - "pstree -pn 1 | grep -v pstree | grep -v grep | grep -o '([[:digit:]]*)' | grep -o " \ - "'[[:digit:]]*'" +#define GET_US_PROCS_CMD "ps -ef | grep -v '\\[' | awk 'NR > 1 {print $2}'" #define QUERY_PROCS_CMD "ps -ef | grep -E '%s' | grep -v grep | awk '{print $2}'" #define WATT_CGROUP_PATH "/sys/fs/cgroup/cpu/watt_sched" diff --git a/pwrapis/src/server.c b/pwrapis/src/server.c index 3e53a72..b6e22d2 100644 --- a/pwrapis/src/server.c +++ b/pwrapis/src/server.c @@ -199,13 +199,15 @@ static void AcceptConnection(void) struct ucred credSocket; if (getsockopt(newClientFd, SOL_SOCKET, SO_PEERCRED, &credSocket, &socklen) < 0) { Logger(ERROR, MD_NM_SVR, "get sock options failed"); + close(newClientFd); return; } PwrClient client = {0}; client.fd = newClientFd; client.sysId = credSocket.pid; - if (PassCredVerification(&credSocket, client.userName) == PWR_ERR_NOT_AUTHED) { + int ret = PassCredVerification(&credSocket, client.userName); + if (ret == PWR_ERR_NOT_AUTHED) { Logger(ERROR, MD_NM_CRED, "credentials verification failed"); const char *info = "Server has closed connection. This client has no admin permission."; /* eventData should be release in the function that uses it */ @@ -220,6 +222,10 @@ static void AcceptConnection(void) sizeof(PWR_COM_EventInfo) + strlen(info) + 1); close(newClientFd); return; + } else if (ret == PWR_ERR_COMMON) { + Logger(ERROR, MD_NM_CRED, "credentials verification failed with common error"); + close(newClientFd); + return; } if (AddToClientList(g_pwrClients, client) != PWR_SUCCESS) { -- Gitee