X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Fpam-module.c;h=1259457efc5f43351a6cf2f826e8a228cdeb91cf;hp=195d4d574e8605aa30402835e5232b51d1e5e20c;hb=85c08dc013f9f99b58bc9b79284af0b35304237b;hpb=3831838ae7b3ac145711bb84a71cb86cdd829975 diff --git a/src/login/pam-module.c b/src/login/pam-module.c index 195d4d574..1259457ef 100644 --- a/src/login/pam-module.c +++ b/src/login/pam-module.c @@ -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; } }