Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

RDMA/core: Prefer NLA_NUL_STRING

These attributes are evaluated as c-string (passed to strcmp), but
NLA_STRING doesn't check for the presence of a \0 terminator.

Either this needs to switch to nla_strcmp() and needs to adjust printf fmt
specifier to not use plain %s, or this needs to use NLA_NUL_STRING.

As the code has been this way for long time, it seems to me that userspace
does include the terminating nul, even tough its not enforced so far, and
thus NLA_NUL_STRING use is the simpler solution.

Fixes: 30dc5e63d6a5 ("RDMA/core: Add support for iWARP Port Mapper user space service")
Link: https://patch.msgid.link/r/20260330122742.13315-1-fw@strlen.de
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>

authored by

Florian Westphal and committed by
Jason Gunthorpe
6ed3d14f 973403ca

+3 -3
+3 -3
drivers/infiniband/core/iwpm_msg.c
··· 365 365 /* netlink attribute policy for the received response to register pid request */ 366 366 static const struct nla_policy resp_reg_policy[IWPM_NLA_RREG_PID_MAX] = { 367 367 [IWPM_NLA_RREG_PID_SEQ] = { .type = NLA_U32 }, 368 - [IWPM_NLA_RREG_IBDEV_NAME] = { .type = NLA_STRING, 368 + [IWPM_NLA_RREG_IBDEV_NAME] = { .type = NLA_NUL_STRING, 369 369 .len = IWPM_DEVNAME_SIZE - 1 }, 370 - [IWPM_NLA_RREG_ULIB_NAME] = { .type = NLA_STRING, 370 + [IWPM_NLA_RREG_ULIB_NAME] = { .type = NLA_NUL_STRING, 371 371 .len = IWPM_ULIBNAME_SIZE - 1 }, 372 372 [IWPM_NLA_RREG_ULIB_VER] = { .type = NLA_U16 }, 373 373 [IWPM_NLA_RREG_PID_ERR] = { .type = NLA_U16 } ··· 677 677 678 678 /* netlink attribute policy for the received request for mapping info */ 679 679 static const struct nla_policy resp_mapinfo_policy[IWPM_NLA_MAPINFO_REQ_MAX] = { 680 - [IWPM_NLA_MAPINFO_ULIB_NAME] = { .type = NLA_STRING, 680 + [IWPM_NLA_MAPINFO_ULIB_NAME] = { .type = NLA_NUL_STRING, 681 681 .len = IWPM_ULIBNAME_SIZE - 1 }, 682 682 [IWPM_NLA_MAPINFO_ULIB_VER] = { .type = NLA_U16 } 683 683 };