papi: Use CMSG_SPACE for sizing ancillary buffer space
CMSG_LEN provides the length required to store an ancillary item, but it does not consider padding. RFC 3542 requires portable applications to use CMSG_SPACE(), this is documented in the python API: https://docs.python.org/3/library/socket.html#socket.CMSG_LEN Type: improvement Change-Id: I0eab470585f2f39bea38639db95d6b0e047d2cff Signed-off-by: Tom Jones <thj@freebsd.org>
This commit is contained in:
@ -54,7 +54,7 @@ import re
|
||||
def recv_fd(sock):
|
||||
"""Get file descriptor for memory map"""
|
||||
fds = array.array("i") # Array of ints
|
||||
_, ancdata, _, _ = sock.recvmsg(0, socket.CMSG_LEN(4))
|
||||
_, ancdata, _, _ = sock.recvmsg(0, socket.CMSG_SPACE(4))
|
||||
for cmsg_level, cmsg_type, cmsg_data in ancdata:
|
||||
if cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS:
|
||||
fds.frombytes(cmsg_data[: len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
|
||||
|
Reference in New Issue
Block a user