net: inet_is_local_reserved_port() port arg should be unsigned short
authorMaciej Żenczykowski <maze@google.com>
Tue, 26 Nov 2019 22:44:16 +0000 (14:44 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Nov 2019 23:15:07 +0000 (15:15 -0800)
Any argument outside of that range would result in an out of bound
memory access, since the accessed array is 65536 bits long.

Signed-off-by: Maciej Żenczykowski <maze@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip.h

index 5a61bd9..02d68e3 100644 (file)
@@ -339,7 +339,7 @@ static inline u64 snmp_fold_field64(void __percpu *mib, int offt, size_t syncp_o
 void inet_get_local_port_range(struct net *net, int *low, int *high);
 
 #ifdef CONFIG_SYSCTL
-static inline bool inet_is_local_reserved_port(struct net *net, int port)
+static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port)
 {
        if (!net->ipv4.sysctl_local_reserved_ports)
                return false;
@@ -357,7 +357,7 @@ static inline bool inet_port_requires_bind_service(struct net *net, unsigned sho
 }
 
 #else
-static inline bool inet_is_local_reserved_port(struct net *net, int port)
+static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port)
 {
        return false;
 }