From d903af3614212b9f93a449d189d0d14ff3cd2938 Mon Sep 17 00:00:00 2001 From: Tim Schumacher Date: Tue, 5 Jul 2022 21:00:52 +0200 Subject: [PATCH] LibC: Don't clear static storage during `endgrent` The POSIX documentation for `endgrent` only mentions that it "closes the group database", not that it clears the backing storage for return values. This means that applications might make use of the returned values even after closing the group database itself. This includes our own implementations for `getgrnam` and `getgrgid`. The specification also states that "the storage areas might be overwritten by a subsequent call to `getgrgid`, `getgrnam`, or `getgrent`". This implies that `getgrgid` and `getgrnam` aren't meant to have their own static storage and instead rely on the storage of `getgrent`. --- Userland/Libraries/LibC/grp.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Userland/Libraries/LibC/grp.cpp b/Userland/Libraries/LibC/grp.cpp index 94ad2b2634a7bc..5bfa1b727700f6 100644 --- a/Userland/Libraries/LibC/grp.cpp +++ b/Userland/Libraries/LibC/grp.cpp @@ -47,13 +47,6 @@ void endgrent() fclose(s_stream); s_stream = nullptr; } - - memset(&s_group, 0, sizeof(s_group)); - - s_name = {}; - s_passwd = {}; - s_members = {}; - s_members_ptrs = {}; } struct group* getgrgid(gid_t gid)