good for merge

On Thu, 2010-02-25 at 19:30 +1100, Angus Salkeld wrote:
> This is just to convert non thread safe calls to thread safe ones.
> 
> -Angus
> 
> Signed-off-by: Angus Salkeld <[email protected]>
> ---
>  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)
>  {

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to