lint: replace getpwuid() with getpwuid_r()

This commit is contained in:
Kurtis Rader 2017-05-10 21:08:36 -07:00
parent a92a7cbb9c
commit f10e4f88b6
4 changed files with 12 additions and 17 deletions

View file

@ -8,6 +8,3 @@ varFuncNullUB
// the warning being suppressed. In other words this unmatchedSuppression
// warnings are false positives.
unmatchedSuppression
flockSemanticsWarning:src/env_universal_common.cpp
flockSemanticsWarning:src/history.cpp

View file

@ -702,9 +702,12 @@ wcstring env_get_pwd_slash(void) {
/// Set up the USER variable.
static void setup_user(bool force) {
if (env_get_string(L"USER").missing_or_empty() || force) {
const struct passwd *pw = getpwuid(getuid());
if (pw && pw->pw_name) {
const wcstring uname = str2wcstring(pw->pw_name);
struct passwd userinfo;
struct passwd *result;
char buf[8192];
int retval = getpwuid_r(getuid(), &userinfo, buf, sizeof(buf), &result);
if (!retval && result) {
const wcstring uname = str2wcstring(userinfo.pw_name);
env_set(L"USER", uname.c_str(), ENV_GLOBAL | ENV_EXPORT);
}
}

View file

@ -141,8 +141,11 @@ static wcstring get_runtime_path() {
} else {
const char *uname = getenv("USER");
if (uname == NULL) {
const struct passwd *pw = getpwuid(getuid());
uname = pw->pw_name;
struct passwd userinfo;
struct passwd *result;
char buf[8192];
int retval = getpwuid_r(getuid(), &userinfo, buf, sizeof(buf), &result);
if (!retval && result) uname = userinfo.pw_name;
}
// /tmp/fish.user
@ -1381,10 +1384,6 @@ std::unique_ptr<universal_notifier_t> universal_notifier_t::new_notifier_for_str
case strategy_named_pipe: {
return make_unique<universal_notifier_named_pipe_t>(test_path);
}
default: {
debug(0, "Unsupported universal notifier strategy %d\n", strat);
return NULL;
}
}
}

View file

@ -176,19 +176,15 @@ int killpg(int pgr, int sig);
#endif
#ifndef HAVE_FLOCK
/// Fallback implementation of flock in terms of fcntl
/// Fallback implementation of flock in terms of fcntl.
/// Danger! The semantics of flock and fcntl locking are very different.
/// Use with caution.
// Ignore the cppcheck warning as this is the implementation that it is
// warning about!
// cppcheck-suppress flockSemanticsWarning
int flock(int fd, int op);
#define LOCK_SH 1 // Shared lock.
#define LOCK_EX 2 // Exclusive lock.
#define LOCK_UN 8 // Unlock.
#define LOCK_NB 4 // Don't block when locking.
#endif
#endif