diff --git a/pwrapis/src/procservice.c b/pwrapis/src/procservice.c index 2a2467f8cda89e2a9ce8352cc23631fba2b22e99..2a23cc9070ab5b13b23a092065a756e66512e1ba 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 3e53a72cd39dfedee4962d265e3b8e2e6dfb2f06..b6e22d23f2716757808628769968980a8d8b956b 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) {