OTOH, an invalid address will be caught on the first send(), where
-EHOSTUNREACH will be returned.
Jon, what do you think?

Den fre 8 mars 2019 kl 21:16 skrev Erik Hugne <[email protected]>:

> I just realized that we may need to do some basic validation of
> TIPC_MULTICAST addresses.
> With this patch, it will allow to connect() an address with lower > upper,
> which is bad.
>
>
> Den fre 8 mars 2019 kl 20:09 skrev <[email protected]>:
>
>> From: Erik Hugne <[email protected]>
>>
>> Perform the address type validation after we check if it's a
>> connectionless socket, allowing TIPC_MULTICAST addresses to be
>> associated with RDM/DGRAM sockets. This was broken in the commit
>> listed below.
>>
>> Fixes: 23998835be98 ("tipc: improve address sanity check in
>> tipc_connect()")
>> Signed-off-by: Erik Hugne <[email protected]>
>> ---
>>  net/tipc/socket.c | 9 ++++-----
>>  1 file changed, 4 insertions(+), 5 deletions(-)
>>
>> diff --git a/net/tipc/socket.c b/net/tipc/socket.c
>> index e482b342bfa8..0ad8e6585adf 100644
>> --- a/net/tipc/socket.c
>> +++ b/net/tipc/socket.c
>> @@ -2387,16 +2387,15 @@ static int tipc_connect(struct socket *sock,
>> struct sockaddr *dest,
>>         } else if (dst->family != AF_TIPC) {
>>                 res = -EINVAL;
>>         }
>> -       if (dst->addrtype != TIPC_ADDR_ID && dst->addrtype !=
>> TIPC_ADDR_NAME)
>> -               res = -EINVAL;
>> -       if (res)
>> -               goto exit;
>> -
>>         /* DGRAM/RDM connect(), just save the destaddr */
>>         if (tipc_sk_type_connectionless(sk)) {
>>                 memcpy(&tsk->peer, dest, destlen);
>>                 goto exit;
>>         }
>> +       if (dst->addrtype != TIPC_ADDR_ID && dst->addrtype !=
>> TIPC_ADDR_NAME)
>> +               res = -EINVAL;
>> +       if (res)
>> +               goto exit;
>>
>>         previous = sk->sk_state;
>>
>> --
>> 2.14.1
>>
>>

_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to