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