libc+apps: Avoid calling endpwent() and endgrent() after every call to get{pw,gr}{nam,uid,gid}
This commit is contained in:
parent
84bed3ceb3
commit
0dbfbe6395
@ -40,6 +40,8 @@ Result<int> luna_main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
gid = grp->gr_gid;
|
gid = grp->gr_gid;
|
||||||
|
|
||||||
|
endgrent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,6 +75,8 @@ Result<int> luna_main(int argc, char** argv)
|
|||||||
|
|
||||||
gid = pw->pw_gid;
|
gid = pw->pw_gid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
endpwent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ Result<int> luna_main(int argc, char** argv)
|
|||||||
struct passwd* pw = getpwuid(getuid());
|
struct passwd* pw = getpwuid(getuid());
|
||||||
if (pw) { username = pw->pw_name; }
|
if (pw) { username = pw->pw_name; }
|
||||||
else { username = getenv("USER"); }
|
else { username = getenv("USER"); }
|
||||||
|
endpwent();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
@ -78,6 +78,8 @@ Result<int> luna_main(int argc, char** argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
endpwent();
|
||||||
|
|
||||||
if ((prompt_password || getuid() != geteuid()) && *entry->pw_passwd)
|
if ((prompt_password || getuid() != geteuid()) && *entry->pw_passwd)
|
||||||
{
|
{
|
||||||
char* pass = getpass();
|
char* pass = getpass();
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#include <luna/Vector.h>
|
#include <luna/Vector.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -20,6 +21,7 @@ extern "C"
|
|||||||
{
|
{
|
||||||
f = fopen("/etc/group", "r");
|
f = fopen("/etc/group", "r");
|
||||||
if (!f) return nullptr;
|
if (!f) return nullptr;
|
||||||
|
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
@ -82,14 +84,9 @@ extern "C"
|
|||||||
|
|
||||||
while ((entry = getgrent()))
|
while ((entry = getgrent()))
|
||||||
{
|
{
|
||||||
if (!strcmp(entry->gr_name, name))
|
if (!strcmp(entry->gr_name, name)) { return entry; }
|
||||||
{
|
|
||||||
endgrent();
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endgrent();
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,14 +98,9 @@ extern "C"
|
|||||||
|
|
||||||
while ((entry = getgrent()))
|
while ((entry = getgrent()))
|
||||||
{
|
{
|
||||||
if (entry->gr_gid == gid)
|
if (entry->gr_gid == gid) { return entry; }
|
||||||
{
|
|
||||||
endgrent();
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endgrent();
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include <fcntl.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -45,6 +46,7 @@ extern "C"
|
|||||||
{
|
{
|
||||||
f = fopen("/etc/passwd", "r");
|
f = fopen("/etc/passwd", "r");
|
||||||
if (!f) return nullptr;
|
if (!f) return nullptr;
|
||||||
|
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
@ -93,14 +95,9 @@ extern "C"
|
|||||||
|
|
||||||
while ((entry = getpwent()))
|
while ((entry = getpwent()))
|
||||||
{
|
{
|
||||||
if (!strcmp(entry->pw_name, name))
|
if (!strcmp(entry->pw_name, name)) { return entry; }
|
||||||
{
|
|
||||||
endpwent();
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endpwent();
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,14 +109,9 @@ extern "C"
|
|||||||
|
|
||||||
while ((entry = getpwent()))
|
while ((entry = getpwent()))
|
||||||
{
|
{
|
||||||
if (entry->pw_uid == uid)
|
if (entry->pw_uid == uid) { return entry; }
|
||||||
{
|
|
||||||
endpwent();
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endpwent();
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user