mirror of
https://github.com/oasislinux/oasis.git
synced 2026-10-04 12:07:12 +02:00
93 lines
2.6 KiB
Diff
93 lines
2.6 KiB
Diff
From ab480e176692b91f2fb6fb9ea2e1725d980d805d Mon Sep 17 00:00:00 2001
|
|
From: Michael Forney <mforney@mforney.org>
|
|
Date: Fri, 14 Apr 2017 11:25:01 -0700
|
|
Subject: [PATCH] pwcache: Don't use fixed buffer sizes
|
|
|
|
---
|
|
lib/libc/gen/pwcache.c | 20 ++++++++------------
|
|
1 file changed, 8 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/lib/libc/gen/pwcache.c b/lib/libc/gen/pwcache.c
|
|
index d54daa08cc7..2f30f4b966b 100644
|
|
--- a/lib/libc/gen/pwcache.c
|
|
+++ b/lib/libc/gen/pwcache.c
|
|
@@ -202,8 +202,7 @@ grptb_start(void)
|
|
const char *
|
|
user_from_uid(uid_t uid, int noname)
|
|
{
|
|
- struct passwd pwstore, *pw = NULL;
|
|
- char pwbuf[_PW_BUF_LEN];
|
|
+ struct passwd *pw;
|
|
UIDC **pptr, *ptr = NULL;
|
|
|
|
if ((uidtb != NULL) || (uidtb_start() == 0)) {
|
|
@@ -226,7 +225,7 @@ user_from_uid(uid_t uid, int noname)
|
|
*pptr = ptr = malloc(sizeof(UIDC));
|
|
}
|
|
|
|
- getpwuid_r(uid, &pwstore, pwbuf, sizeof(pwbuf), &pw);
|
|
+ pw = getpwuid(uid);
|
|
if (pw == NULL) {
|
|
/*
|
|
* no match for this uid in the local password file
|
|
@@ -263,8 +262,7 @@ user_from_uid(uid_t uid, int noname)
|
|
const char *
|
|
group_from_gid(gid_t gid, int noname)
|
|
{
|
|
- struct group grstore, *gr = NULL;
|
|
- char grbuf[_GR_BUF_LEN];
|
|
+ struct group *gr;
|
|
GIDC **pptr, *ptr = NULL;
|
|
|
|
if ((gidtb != NULL) || (gidtb_start() == 0)) {
|
|
@@ -287,7 +285,7 @@ group_from_gid(gid_t gid, int noname)
|
|
*pptr = ptr = malloc(sizeof(GIDC));
|
|
}
|
|
|
|
- getgrgid_r(gid, &grstore, grbuf, sizeof(grbuf), &gr);
|
|
+ gr = getgrgid(gid);
|
|
if (gr == NULL) {
|
|
/*
|
|
* no match for this gid in the local group file, put in
|
|
@@ -322,8 +320,7 @@ group_from_gid(gid_t gid, int noname)
|
|
int
|
|
uid_from_user(const char *name, uid_t *uid)
|
|
{
|
|
- struct passwd pwstore, *pw = NULL;
|
|
- char pwbuf[_PW_BUF_LEN];
|
|
+ struct passwd *pw;
|
|
UIDC **pptr, *ptr = NULL;
|
|
size_t namelen;
|
|
|
|
@@ -357,7 +354,7 @@ uid_from_user(const char *name, uid_t *uid)
|
|
* no match, look it up, if no match store it as an invalid entry,
|
|
* or store the matching uid
|
|
*/
|
|
- getpwnam_r(name, &pwstore, pwbuf, sizeof(pwbuf), &pw);
|
|
+ pw = getpwnam(name);
|
|
if (ptr == NULL) {
|
|
if (pw == NULL)
|
|
return -1;
|
|
@@ -383,8 +380,7 @@ uid_from_user(const char *name, uid_t *uid)
|
|
int
|
|
gid_from_group(const char *name, gid_t *gid)
|
|
{
|
|
- struct group grstore, *gr = NULL;
|
|
- char grbuf[_GR_BUF_LEN];
|
|
+ struct group *gr;
|
|
GIDC **pptr, *ptr = NULL;
|
|
size_t namelen;
|
|
|
|
@@ -418,7 +414,7 @@ gid_from_group(const char *name, gid_t *gid)
|
|
* no match, look it up, if no match store it as an invalid entry,
|
|
* or store the matching gid
|
|
*/
|
|
- getgrnam_r(name, &grstore, grbuf, sizeof(grbuf), &gr);
|
|
+ gr = getgrnam(name);
|
|
if (ptr == NULL) {
|
|
if (gr == NULL)
|
|
return -1;
|
|
--
|
|
2.19.0
|
|
|