* [Bug 15952] New: man page cmsg(3) inconsistency @ 2010-05-09 22:56 bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r [not found] ` <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/> 0 siblings, 1 reply; 5+ messages in thread From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2010-05-09 22:56 UTC (permalink / raw) To: linux-man-u79uwXL29TY76Z2rM5mHXA https://bugzilla.kernel.org/show_bug.cgi?id=15952 URL: http://bugs.gentoo.org/show_bug.cgi?id=318801 Summary: man page cmsg(3) inconsistency Product: Documentation Version: unspecified Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: man-pages AssignedTo: documentation_man-pages-ztI5WcYan/vQLgFONoPN62D2FQJk+8+b@public.gmane.org ReportedBy: chris2k01-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org Regression: No In man page cmsg(3), I see the following prose: "Finally, the msg_controllen field of the msghdr should be set to the sum of the CMSG_SPACE() of the length of all control messages in the buffer. For more information on the msghdr, see recvmsg(2)." Then, in the sample code at the bottom, I see this code: msg.msg_control = buf; msg.msg_controllen = sizeof buf; cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; cmsg->cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD); /* Initialize the payload: */ fdptr = (int *) CMSG_DATA(cmsg); memcpy(fdptr, myfds, NUM_FD * sizeof(int)); /* Sum of the length of all control messages in the buffer: */ msg.msg_controllen = cmsg->cmsg_len; This is inconsistent: the prose states that msg_controllen should be initialized with the sum of CMSG_SPACE across all messages, whereas the example code shows msg_controllen being initialized with cmsg->cmsg_len, which is itself initialized with CMSG_LEN, not CMSG_SPACE. I don't know what the right answer is, but for control messages whose length is not a multiple of the alignment requirement, this could make a difference. -- Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/>]
* [Bug 15952] man page cmsg(3) inconsistency [not found] ` <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/> @ 2013-06-04 22:36 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2013-06-04 22:58 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2013-06-04 22:36 UTC (permalink / raw) To: linux-man-u79uwXL29TY76Z2rM5mHXA https://bugzilla.kernel.org/show_bug.cgi?id=15952 Josh Bowman <jbowman-2iQDLUlslvR8UrSeD/g0lQ@public.gmane.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jbowman-2iQDLUlslvR8UrSeD/g0lQ@public.gmane.org --- Comment #1 from Josh Bowman <jbowman-2iQDLUlslvR8UrSeD/g0lQ@public.gmane.org> 2013-06-04 22:36:16 --- I believe the prose section is correct and the sample code is incorrect. There's a nice chart of the data structure in rfc 2292, section 4.3. -- Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug 15952] man page cmsg(3) inconsistency [not found] ` <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/> 2013-06-04 22:36 ` [Bug 15952] " bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2013-06-04 22:58 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2015-02-19 15:48 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2015-05-05 16:02 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 3 siblings, 0 replies; 5+ messages in thread From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2013-06-04 22:58 UTC (permalink / raw) To: linux-man-u79uwXL29TY76Z2rM5mHXA https://bugzilla.kernel.org/show_bug.cgi?id=15952 --- Comment #2 from Josh Bowman <jbowman-2iQDLUlslvR8UrSeD/g0lQ@public.gmane.org> 2013-06-04 22:57:59 --- (Sorry, that's section 4.2 of rfc 2292.) It looks like there's more detail in Appendix A of rfc 3542 (section 20.2): "While sending an application may or may not include padding at the end of last ancillary data in msg_controllen and implementations must accept both as valid." This seems to indicate that the sample code could be correct either way, but only because there's only one control message in the buffer. I think it's still confusing, and should be changed to show msg.msg_controllen initialized with a value coming from CMSG_SPACE. (Or at least to make clear why we can get away with using cmsg_len in this case.) -- Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug 15952] man page cmsg(3) inconsistency [not found] ` <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/> 2013-06-04 22:36 ` [Bug 15952] " bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2013-06-04 22:58 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2015-02-19 15:48 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2015-05-05 16:02 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 3 siblings, 0 replies; 5+ messages in thread From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2015-02-19 15:48 UTC (permalink / raw) To: linux-man-u79uwXL29TY76Z2rM5mHXA https://bugzilla.kernel.org/show_bug.cgi?id=15952 Alan <alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org --- Comment #3 from Alan <alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org> --- Still present -- You are receiving this mail because: You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug 15952] man page cmsg(3) inconsistency [not found] ` <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/> ` (2 preceding siblings ...) 2015-02-19 15:48 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2015-05-05 16:02 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 3 siblings, 0 replies; 5+ messages in thread From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2015-05-05 16:02 UTC (permalink / raw) To: linux-man-u79uwXL29TY76Z2rM5mHXA https://bugzilla.kernel.org/show_bug.cgi?id=15952 Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Resolution|--- |CODE_FIX --- Comment #4 from Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- It seems to me that at the time this report was made, there were at least *two* problems with this code snippet: msg.msg_control = buf; [1] msg.msg_controllen = sizeof buf; cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; cmsg->cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD); /* Initialize the payload: */ fdptr = (int *) CMSG_DATA(cmsg); memcpy(fdptr, myfds, NUM_FD * sizeof(int)); /* Sum of the length of all control messages in the buffer: */ [2] msg.msg_controllen = cmsg->cmsg_len; One of these is the problem referred to in this bug, at the line marked [2]. But the other is that there's a general confusion in the code where msg.msg_controllen is being initialized twice. Since the time of the report, the code has changed a little because on some other reports, but the problem line [2] still exists. The solution is I believe to remove line [2] and modify line [1] (which was already done as a result of the other changes), as shown in this revised code snippet: struct msghdr msg = {0}; struct cmsghdr *cmsg; int myfds[NUM_FD]; /* Contains the file descriptors to pass. */ union { /* ancillary data buffer, wrapped in a union in order to ensure it is suitably aligned */ char buf[CMSG_SPACE(sizeof myfds)]; struct cmsghdr align; } u; int *fdptr; msg.msg_control = u.buf; msg.msg_controllen = sizeof u.buf; cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; cmsg->cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD); /* Initialize the payload: */ fdptr = (int *) CMSG_DATA(cmsg); memcpy(fdptr, myfds, NUM_FD * sizeof(int)); I've made this change, which I believe addresses the problem, so I'm closing this bug. Please reopen, if you believe there is still a problem. -- You are receiving this mail because: You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-05-05 16:02 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-05-09 22:56 [Bug 15952] New: man page cmsg(3) inconsistency bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r [not found] ` <bug-15952-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/> 2013-06-04 22:36 ` [Bug 15952] " bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2013-06-04 22:58 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2015-02-19 15:48 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r 2015-05-05 16:02 ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.