Ack.

-----Original Message-----
From: Thien Minh Huynh <thien.m.hu...@dektech.com.au> 
Sent: Thursday, June 9, 2022 1:47 PM
To: Thang Duc Nguyen <thang.d.ngu...@dektech.com.au>; Minh Hon Chau 
<minh.c...@dektech.com.au>; Hieu Hong Hoang <hieu.h.ho...@dektech.com.au>; Dat 
Tran Quoc Phan <dat.tq.p...@dektech.com.au>
Cc: opensaf-devel@lists.sourceforge.net; Thien Minh Huynh 
<thien.m.hu...@dektech.com.au>
Subject: [PATCH 1/1] base: Correctly use the MAX_GRP_MEM_BUF_SIZE [#3316]

Reset errno to prevent ERANGE unexpected.
Align realloc memory with MAX_GRP_MEM_BUF_SIZE.
Improve logging for unexpected configure.
---
 src/base/osaf_secutil.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/base/osaf_secutil.c b/src/base/osaf_secutil.c index 
6c8414e71..551cd934e 100644
--- a/src/base/osaf_secutil.c
+++ b/src/base/osaf_secutil.c
@@ -315,18 +315,24 @@ bool osaf_user_is_member_of_group(uid_t uid, const char 
*groupname)
                buff_size = getenv("MAX_GRP_MEM_BUF_SIZE");
 
                if (buff_size != NULL) {
+                       errno = 0;
                        maxgrpmembufsize = strtol(buff_size, NULL, 10);
                        if (errno == ERANGE || maxgrpmembufsize > UINT16_MAX) {
+                               TRACE_3("MAX_GRP_MEM_BUF_SIZE=%ld set too 
large,"
+                                   " align to %d", maxgrpmembufsize, 
UINT16_MAX);
                                maxgrpmembufsize = UINT16_MAX;
-                               LOG_WA("Too large, allign to %ld", 
maxgrpmembufsize);
                        } else if (maxgrpmembufsize < DEFAULT_GRP_MEM_BUF_SIZE) 
{
+                               TRACE_3("MAX_GRP_MEM_BUF_SIZE=%ld set too 
small,"
+                                   " align to %d", maxgrpmembufsize,
+                                   DEFAULT_GRP_MEM_BUF_SIZE);
                                maxgrpmembufsize = DEFAULT_GRP_MEM_BUF_SIZE;
-                               LOG_WA("Too small, allign to %ld", 
maxgrpmembufsize);
                        }
                }
        }
        while (grnam_retval == ERANGE && grpmembufsize < maxgrpmembufsize) {
-               grpmembufsize += DEFAULT_GRP_MEM_BUF_SIZE;
+               grpmembufsize += NSS_BUFLEN_GROUP;
+               if (grpmembufsize > maxgrpmembufsize)
+                       grpmembufsize = maxgrpmembufsize;
                char *temp = realloc(grpmembuf, grpmembufsize);
 
                if (temp == NULL) {
@@ -338,6 +344,7 @@ bool osaf_user_is_member_of_group(uid_t uid, const char 
*groupname)
                grnam_retval = getgrnam_r(groupname, &gbuf, grpmembuf, 
grpmembufsize,
                                                                        
&client_grp);
        }
+
        if (grnam_retval != 0) {
                LOG_ER("%s: get group file entry failed for '%s' - %s",
                                __func__, groupname, strerror(grnam_retval));
--
2.25.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to