mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
netfilter: ipset: Replace strlcpy with strscpy
strlcpy() reads the entire source buffer first. This read may exceed the destination size limit. This is both inefficient and can lead to linear read overflows if a source string is not NUL-terminated [1]. In an effort to remove strlcpy() completely [2], replace strlcpy() here with strscpy(). Direct replacement is safe here since return value from all callers of STRLCPY macro were ignored. [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy [2] https://github.com/KSPP/linux/issues/89 Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com> Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org> Reviewed-by: Kees Cook <keescook@chromium.org> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20230613003437.3538694-1-azeemshaikh38@gmail.com
This commit is contained in:
parent
f0a6b5831c
commit
acf15e07eb
@ -40,7 +40,7 @@ MODULE_ALIAS("ip_set_hash:net,iface");
|
||||
#define IP_SET_HASH_WITH_MULTI
|
||||
#define IP_SET_HASH_WITH_NET0
|
||||
|
||||
#define STRLCPY(a, b) strlcpy(a, b, IFNAMSIZ)
|
||||
#define STRSCPY(a, b) strscpy(a, b, IFNAMSIZ)
|
||||
|
||||
/* IPv4 variant */
|
||||
|
||||
@ -182,11 +182,11 @@ hash_netiface4_kadt(struct ip_set *set, const struct sk_buff *skb,
|
||||
|
||||
if (!eiface)
|
||||
return -EINVAL;
|
||||
STRLCPY(e.iface, eiface);
|
||||
STRSCPY(e.iface, eiface);
|
||||
e.physdev = 1;
|
||||
#endif
|
||||
} else {
|
||||
STRLCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
|
||||
STRSCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
|
||||
}
|
||||
|
||||
if (strlen(e.iface) == 0)
|
||||
@ -400,11 +400,11 @@ hash_netiface6_kadt(struct ip_set *set, const struct sk_buff *skb,
|
||||
|
||||
if (!eiface)
|
||||
return -EINVAL;
|
||||
STRLCPY(e.iface, eiface);
|
||||
STRSCPY(e.iface, eiface);
|
||||
e.physdev = 1;
|
||||
#endif
|
||||
} else {
|
||||
STRLCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
|
||||
STRSCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
|
||||
}
|
||||
|
||||
if (strlen(e.iface) == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user