From: Remi Gacogne Date: Fri, 24 May 2024 14:34:14 +0000 (+0200) Subject: ixfrdist: Fix brokn 'uid' and 'gid' parsing for non-numerical values X-Git-Tag: rec-5.1.0-beta1~23^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f4d0470792e1c6c55ab17a74a312ed5a2fe08d2c;p=thirdparty%2Fpdns.git ixfrdist: Fix brokn 'uid' and 'gid' parsing for non-numerical values Introduced in 48d1f24b87dfd95696c0db8311c81dc622717102 --- diff --git a/pdns/ixfrdist.cc b/pdns/ixfrdist.cc index 9cebccded5..bbac3d6f97 100644 --- a/pdns/ixfrdist.cc +++ b/pdns/ixfrdist.cc @@ -1647,15 +1647,16 @@ static std::optional parseConfiguration(int argc, char** } if (config["gid"].IsDefined()) { + bool gidParsed = false; auto gid = config["gid"].as(); try { configuration.gid = pdns::checked_stoi(gid); + gidParsed = true; } catch (const std::exception& e) { - g_log< parseConfiguration(int argc, char** } if (config["uid"].IsDefined()) { + bool uidParsed = false; auto uid = config["uid"].as(); try { configuration.uid = pdns::checked_stoi(uid); + uidParsed = true; } catch (const std::exception& e) { - g_log< parseConfiguration(int argc, char** had_error = true; } else { configuration.uid = pw->pw_uid; + uidParsed = true; } //NOLINTNEXTLINE(concurrency-mt-unsafe): only one thread at this point + } + if (uidParsed) { configuration.userInfo = getpwuid(configuration.uid); } } @@ -1799,11 +1804,6 @@ int main(int argc, char** argv) { } if (configuration->uid != 0) { - g_log<uid<uid) < 0) { - g_log<uid<<": "<userInfo == nullptr) { if (setgroups(0, nullptr) < 0) { g_log<uid<uid) < 0) { + g_log<uid<<": "<