This is just to convert non thread safe calls to thread safe ones. -Angus
Signed-off-by: Angus Salkeld <asalk...@redhat.com> --- exec/mainconfig.c | 40 ++++++++++++++++++++++++---------------- 1 files changed, 24 insertions(+), 16 deletions(-) diff --git a/exec/mainconfig.c b/exec/mainconfig.c index 2c2a5b6..b343b81 100644 --- a/exec/mainconfig.c +++ b/exec/mainconfig.c @@ -564,34 +564,42 @@ parse_error: static int uid_determine (const char *req_user) { - struct passwd *passwd; - int ais_uid = 0; - - passwd = getpwnam(req_user); - if (passwd == 0) { - log_printf (LOGSYS_LEVEL_ERROR, "ERROR: The '%s' user is not found in /etc/passwd, please read the documentation.\n", req_user); + struct passwd passwd; + struct passwd* pwdptr = &passwd; + struct passwd* temp_pwd_pt; + char pwdbuffer[200]; + int pwdlinelen = sizeof(pwdbuffer); + + if ((getpwnam_r (req_user, pwdptr, pwdbuffer, pwdlinelen, &temp_pwd_pt)) != 0) { + log_printf (LOGSYS_LEVEL_ERROR, + "ERROR: The '%s' user is not found in /etc/passwd, please read the documentation.\n", + req_user); corosync_exit_error (AIS_DONE_UID_DETERMINE); } - ais_uid = passwd->pw_uid; - endpwent (); - return ais_uid; + + return passwd.pw_uid; } static int gid_determine (const char *req_group) { - struct group *group; int ais_gid = 0; - - group = getgrnam (req_group); - if (group == 0) { - log_printf (LOGSYS_LEVEL_ERROR, "ERROR: The '%s' group is not found in /etc/group, please read the documentation.\n", req_group); + struct group group; + struct group * grpptr = &group; + struct group * temp_grp_pt; + char grpbuffer[200]; + int grplinelen = sizeof(grpbuffer); + + if ((getgrnam_r (req_group, grpptr, grpbuffer, grplinelen, &temp_grp_pt)) != 0) { + log_printf (LOGSYS_LEVEL_ERROR, + "ERROR: The '%s' group is not found in /etc/group, please read the documentation.\n", + req_group); corosync_exit_error (AIS_DONE_GID_DETERMINE); } - ais_gid = group->gr_gid; - endgrent (); + ais_gid = group.gr_gid; return ais_gid; } + static void main_objdb_reload_notify(objdb_reload_notify_type_t type, int flush, void *priv_data_pt) { -- 1.6.6.1 _______________________________________________ Openais mailing list Openais@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/openais