From bfad727b0600b5ebb4405558e68ccca515893106 Mon Sep 17 00:00:00 2001 From: Veerendranath Jakkam Date: Tue, 19 Jun 2018 15:20:44 +0530 Subject: [PATCH] qsap: Add NULL check for getpwnam and getgrnam. Add appropriate checks to avoid NULL pointer dereferencing. Change-Id: I0961a8e55fea055ee731e20ae28c833c54c32e67 CRs-Fixed: 2263188 --- softap/sdk/qsap.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/softap/sdk/qsap.c b/softap/sdk/qsap.c index 84b22d6..9a885bd 100644 --- a/softap/sdk/qsap.c +++ b/softap/sdk/qsap.c @@ -603,6 +603,8 @@ int wigig_ensure_entropy_file_exists() { int ret; int destfd; + struct passwd *pw; + struct group *gr; ret = access(WIGIG_ENTROPY_FILE, R_OK|W_OK); if ((ret == 0) || (errno == EACCES)) { @@ -634,9 +636,17 @@ int wigig_ensure_entropy_file_exists() return -1; } - if (chown(WIGIG_ENTROPY_FILE, getpwnam("system")->pw_uid, getgrnam("wifi")->gr_gid) < 0) { - ALOGE("Error changing group ownership of %s to %d: %s", - WIGIG_ENTROPY_FILE, getgrnam("wifi")->gr_gid, strerror(errno)); + pw = getpwnam("system"); + gr = getgrnam("wifi"); + if (pw && gr) { + if (chown(WIGIG_ENTROPY_FILE, pw->pw_uid, gr->gr_gid) < 0) { + ALOGE("Error changing group ownership of %s to %d: %s", + WIGIG_ENTROPY_FILE, gr->gr_gid, strerror(errno)); + unlink(WIGIG_ENTROPY_FILE); + return -1; + } + } else { + ALOGE("Cannot get pw_uid or gr_gid : %s", strerror(errno)); unlink(WIGIG_ENTROPY_FILE); return -1; }