Re: [PATCH net] tipc: Return non-zero value from tipc_udp_addr2str() on error

From: Shigeru Yoshida
Date: Tue Jul 16 2024 - 03:45:58 EST


Hi Tung,

On Tue, 16 Jul 2024 07:35:50 +0000, Tung Nguyen wrote:
>>tipc_udp_addr2str() should return non-zero value if the UDP media address is invalid. Otherwise, a buffer overflow access can occur in
>>tipc_media_addr_printf(). Fix this by returning 1 on an invalid UDP media address.
>>
>>Fixes: d0f91938bede ("tipc: add ip/udp media type")
>>Signed-off-by: Shigeru Yoshida <syoshida@xxxxxxxxxx>
>>---
>> net/tipc/udp_media.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>>diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c index b849a3d133a0..439f75539977 100644
>>--- a/net/tipc/udp_media.c
>>+++ b/net/tipc/udp_media.c
>>@@ -135,8 +135,11 @@ static int tipc_udp_addr2str(struct tipc_media_addr *a, char *buf, int size)
>> snprintf(buf, size, "%pI4:%u", &ua->ipv4, ntohs(ua->port));
>> else if (ntohs(ua->proto) == ETH_P_IPV6)
>> snprintf(buf, size, "%pI6:%u", &ua->ipv6, ntohs(ua->port));
>>- else
>>+ else {
>> pr_err("Invalid UDP media address\n");
>>+ return 1;
> Please use -EINVAL instead.

Other addr2str functions like tipc_eth_addr2str() use 1, so I followed
convention. But -EINVAL is more appropriate, as you say.

Thanks,
Shigeru