Page MenuHomeFreeBSD

D17452.id49898.diff
No OneTemporary

D17452.id49898.diff

Index: head/usr.sbin/nscd/nscdcli.c
===================================================================
--- head/usr.sbin/nscd/nscdcli.c
+++ head/usr.sbin/nscd/nscdcli.c
@@ -138,14 +138,14 @@
struct msghdr cred_hdr;
struct iovec iov;
- struct {
+ union {
struct cmsghdr hdr;
- struct cmsgcred creds;
+ char cred[CMSG_SPACE(sizeof(struct cmsgcred))];
} cmsg;
TRACE_IN(send_credentials);
memset(&cmsg, 0, sizeof(cmsg));
- cmsg.hdr.cmsg_len = sizeof(cmsg);
+ cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(struct cmsgcred));
cmsg.hdr.cmsg_level = SOL_SOCKET;
cmsg.hdr.cmsg_type = SCM_CREDS;
@@ -153,7 +153,7 @@
cred_hdr.msg_iov = &iov;
cred_hdr.msg_iovlen = 1;
cred_hdr.msg_control = &cmsg;
- cred_hdr.msg_controllen = sizeof(cmsg);
+ cred_hdr.msg_controllen = CMSG_SPACE(sizeof(struct cmsgcred));
iov.iov_base = &type;
iov.iov_len = sizeof(int);
Index: head/usr.sbin/nscd/query.c
===================================================================
--- head/usr.sbin/nscd/query.c
+++ head/usr.sbin/nscd/query.c
@@ -160,7 +160,7 @@
struct cmsgcred *cred;
int elem_type;
- struct {
+ union {
struct cmsghdr hdr;
char cred[CMSG_SPACE(sizeof(struct cmsgcred))];
} cmsg;
@@ -171,8 +171,8 @@
memset(&cred_hdr, 0, sizeof(struct msghdr));
cred_hdr.msg_iov = &iov;
cred_hdr.msg_iovlen = 1;
- cred_hdr.msg_control = (caddr_t)&cmsg;
- cred_hdr.msg_controllen = CMSG_LEN(sizeof(struct cmsgcred));
+ cred_hdr.msg_control = &cmsg;
+ cred_hdr.msg_controllen = CMSG_SPACE(sizeof(struct cmsgcred));
memset(&iov, 0, sizeof(struct iovec));
iov.iov_base = &elem_type;
@@ -183,7 +183,8 @@
return (-1);
}
- if (cmsg.hdr.cmsg_len < CMSG_LEN(sizeof(struct cmsgcred))
+ if (cred_hdr.msg_controllen < CMSG_LEN(sizeof(struct cmsgcred))
+ || cmsg.hdr.cmsg_len < CMSG_LEN(sizeof(struct cmsgcred))
|| cmsg.hdr.cmsg_level != SOL_SOCKET
|| cmsg.hdr.cmsg_type != SCM_CREDS) {
TRACE_OUT(on_query_startup);

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 26, 6:21 PM (9 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24244734
Default Alt Text
D17452.id49898.diff (1 KB)

Event Timeline