Skip to content

Commit 817c70b

Browse files
committed
pam_openrc: don't unlock non-initialized lockfd.
this passed by unnoticed during a refactor, where svc_lock was moved down. defer would've prevented this.
1 parent 459db56 commit 817c70b

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/pam_openrc/pam_openrc.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,8 @@ exec_openrc(pam_handle_t *pamh, bool opening, bool quiet)
7171
}
7272

7373
elog(LOG_INFO, opening ? "starting session" : "stopping session");
74-
fd = svc_lock(pam_lock, false);
7574

76-
if (fd == -1) {
75+
if ((fd = svc_lock(pam_lock, false)) == -1) {
7776
ret = PAM_SESSION_ERR;
7877
goto out;
7978
}
@@ -82,13 +81,13 @@ exec_openrc(pam_handle_t *pamh, bool opening, bool quiet)
8281
if (!(script = rc_service_resolve("user"))) {
8382
elog(LOG_ERR, "Failed to resolve %s.", svc_name);
8483
ret = PAM_SESSION_ERR;
85-
goto out;
84+
goto unlock;
8685
}
8786

8887
if (symlinkat(script, rc_dirfd(RC_DIR_INITD), svc_name) != 0) {
8988
elog(LOG_ERR, "symlink: %s", strerror(errno));
9089
ret = PAM_SESSION_ERR;
91-
goto out;
90+
goto unlock;
9291
}
9392
}
9493

@@ -121,8 +120,9 @@ exec_openrc(pam_handle_t *pamh, bool opening, bool quiet)
121120
rc_service_value_set(svc_name, "logins", logins);
122121
free(logins);
123122

124-
out:
123+
unlock:
125124
svc_unlock(pam_lock, fd);
125+
out:
126126
free(pam_lock);
127127
free(svc_name);
128128
free(script);

0 commit comments

Comments
 (0)