From ef916ff3b5680299e79d6cd2316daaecfe729ece Mon Sep 17 00:00:00 2001 From: Murai Takashi Date: Sat, 12 Jan 2019 09:17:59 +0900 Subject: [PATCH] bin/multiuser: Fix PVS 1809 and 1896 Replace memset() with explicit_bzero(), since compiler could delete memset() funnction call. Change-Id: I6d6ad991951f516cf94b6fdf1772715ef4a42822 Reviewed-on: https://review.haiku-os.org/c/880 Reviewed-by: waddlesplash --- src/bin/multiuser/Jamfile | 8 +++++--- src/bin/multiuser/login.cpp | 2 +- src/bin/multiuser/multiuser_utils.cpp | 2 +- src/bin/multiuser/passwd.cpp | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/bin/multiuser/Jamfile b/src/bin/multiuser/Jamfile index fb81e3cc64..13306c51de 100644 --- a/src/bin/multiuser/Jamfile +++ b/src/bin/multiuser/Jamfile @@ -6,14 +6,16 @@ UsePrivateHeaders kernel ; # for UsePrivateHeaders libroot ; UsePrivateHeaders shared ; +UseHeaders [ FDirName $(HAIKU_TOP) headers compatibility bsd ] : true ; +SubDirC++Flags [ FDefines _BSD_SOURCE=1 ] ; StaticLibrary libmultiuser_utils.a : multiuser_utils.cpp ; -BinCommand login : login.cpp : libmultiuser_utils.a ; +BinCommand login : login.cpp : libmultiuser_utils.a libbsd.so ; -BinCommand su : su.cpp : libmultiuser_utils.a ; +BinCommand su : su.cpp : libmultiuser_utils.a libbsd.so ; -BinCommand passwd : passwd.cpp : libmultiuser_utils.a ; +BinCommand passwd : passwd.cpp : libmultiuser_utils.a libbsd.so ; BinCommand useradd : useradd.cpp ; diff --git a/src/bin/multiuser/login.cpp b/src/bin/multiuser/login.cpp index 37c01f0866..416daea353 100644 --- a/src/bin/multiuser/login.cpp +++ b/src/bin/multiuser/login.cpp @@ -91,7 +91,7 @@ login(const char* user, struct passwd** _passwd) struct spwd* spwd = getspnam(user); bool ok = verify_password(passwd, spwd, password); - memset(password, 0, sizeof(password)); + explicit_bzero(password, sizeof(password)); if (!ok) return B_PERMISSION_DENIED; diff --git a/src/bin/multiuser/multiuser_utils.cpp b/src/bin/multiuser/multiuser_utils.cpp index d8804b193f..d43b82ab0b 100644 --- a/src/bin/multiuser/multiuser_utils.cpp +++ b/src/bin/multiuser/multiuser_utils.cpp @@ -140,7 +140,7 @@ authenticate_user(const char* prompt, passwd* passwd, spwd* spwd, int maxTries, // check it bool ok = verify_password(passwd, spwd, plainPassword); - memset(plainPassword, 0, sizeof(plainPassword)); + explicit_bzero(plainPassword, sizeof(plainPassword)); if (ok) return B_OK; diff --git a/src/bin/multiuser/passwd.cpp b/src/bin/multiuser/passwd.cpp index 33df0c54bd..3c47d25296 100644 --- a/src/bin/multiuser/passwd.cpp +++ b/src/bin/multiuser/passwd.cpp @@ -169,11 +169,11 @@ main(int argc, const char* const* argv) exit(1); } - memset(repeatedPassword, 0, sizeof(repeatedPassword)); + explicit_bzero(repeatedPassword, sizeof(repeatedPassword)); // crypt it encryptedPassword = crypt(password, NULL); - memset(password, 0, sizeof(password)); + explicit_bzero(password, sizeof(password)); } // prepare request for the registrar