X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Fpam-module.c;h=262621d43fd3631eaa14b5d033d7be0f58217ac4;hb=368504f485d09b9fd48b7538e71981f648eb32bb;hp=195d4d574e8605aa30402835e5232b51d1e5e20c;hpb=3831838ae7b3ac145711bb84a71cb86cdd829975;p=elogind.git diff --git a/src/login/pam-module.c b/src/login/pam-module.c index 195d4d574..262621d43 100644 --- a/src/login/pam-module.c +++ b/src/login/pam-module.c @@ -184,7 +184,7 @@ static int export_legacy_dbus_address( return PAM_SUCCESS; if (asprintf(&s, KERNEL_USER_BUS_FMT ";" UNIX_USER_BUS_FMT, - (unsigned long) uid, runtime) < 0) { + uid, runtime) < 0) { pam_syslog(handle, LOG_ERR, "Failed to set bus variable."); return PAM_BUF_ERR; } @@ -252,7 +252,7 @@ _public_ PAM_EXTERN int pam_sm_open_session( if (streq_ptr(service, "systemd-user")) { _cleanup_free_ char *p = NULL, *rt = NULL; - if (asprintf(&p, "/run/systemd/users/%lu", (unsigned long) pw->pw_uid) < 0) + if (asprintf(&p, "/run/systemd/users/"UID_FMT, pw->pw_uid) < 0) return PAM_BUF_ERR; r = parse_env_file(p, NEWLINE, @@ -475,7 +475,7 @@ _public_ PAM_EXTERN int pam_sm_open_session( } if (session_fd >= 0) { - session_fd = dup(session_fd); + session_fd = fcntl(session_fd, F_DUPFD_CLOEXEC, 3); if (session_fd < 0) { pam_syslog(handle, LOG_ERR, "Failed to dup session fd: %m"); return PAM_SESSION_ERR; @@ -484,7 +484,7 @@ _public_ PAM_EXTERN int pam_sm_open_session( r = pam_set_data(handle, "systemd.session-fd", INT_TO_PTR(session_fd+1), NULL); if (r != PAM_SUCCESS) { pam_syslog(handle, LOG_ERR, "Failed to install session fd."); - close_nointr_nofail(session_fd); + safe_close(session_fd); return r; } }