mirror of
https://github.com/opnsense/src.git
synced 2026-06-10 17:22:46 -04:00
bluetooth: sdpd: switch to getpeereid() instead of LOCAL_PEERCRED
sdpd's usage was mostly fine, though it debatably should have been checking the xucred version to avoid mishaps. Switch it to getpeereid() anyways to avoid embedding xucred layout details in more program. Reviewed by: emax Differential Revision: https://reviews.freebsd.org/D51152
This commit is contained in:
parent
665e898d58
commit
d2eb8a0235
1 changed files with 5 additions and 7 deletions
|
|
@ -345,14 +345,12 @@ server_accept_client(server_p srv, int32_t fd)
|
|||
return;
|
||||
}
|
||||
} else {
|
||||
struct xucred cr;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
struct passwd *pw;
|
||||
|
||||
/* Get peer's credentials */
|
||||
memset(&cr, 0, sizeof(cr));
|
||||
size = sizeof(cr);
|
||||
|
||||
if (getsockopt(cfd, 0, LOCAL_PEERCRED, &cr, &size) < 0) {
|
||||
if (getpeereid(cfd, &uid, &gid) < 0) {
|
||||
log_err("Could not get peer's credentials. %s (%d)",
|
||||
strerror(errno), errno);
|
||||
close(cfd);
|
||||
|
|
@ -360,12 +358,12 @@ server_accept_client(server_p srv, int32_t fd)
|
|||
}
|
||||
|
||||
/* Check credentials */
|
||||
pw = getpwuid(cr.cr_uid);
|
||||
pw = getpwuid(uid);
|
||||
if (pw != NULL)
|
||||
priv = (strcmp(pw->pw_name, "root") == 0);
|
||||
else
|
||||
log_warning("Could not verify credentials for uid %d",
|
||||
cr.cr_uid);
|
||||
uid);
|
||||
|
||||
memcpy(&srv->req_sa.l2cap_bdaddr, NG_HCI_BDADDR_ANY,
|
||||
sizeof(srv->req_sa.l2cap_bdaddr));
|
||||
|
|
|
|||
Loading…
Reference in a new issue