From 3fc75ebad02a524f9ab6f2eeb46cac6778b3023b Mon Sep 17 00:00:00 2001 From: liangbotong Date: Tue, 27 Dec 2022 17:46:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?newip=E5=86=85=E6=A0=B8=E6=8F=92=E6=A1=A9?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liangbotong --- src/linux/net/newip/nip_hooks_register.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/linux/net/newip/nip_hooks_register.c b/src/linux/net/newip/nip_hooks_register.c index deea361..d461ceb 100644 --- a/src/linux/net/newip/nip_hooks_register.c +++ b/src/linux/net/newip/nip_hooks_register.c @@ -20,7 +20,12 @@ void ninet_ehashfn_hook(void *data, const struct sock *sk, u32 *ret) void ninet_gifconf_hook(void *data, struct net_device *dev, char __user *buf, int len, int size, int *ret) { - *ret = ninet_gifconf(dev, buf, len, size); + int done = ninet_gifconf(dev, buf + *ret, len - *ret, size); + + if (done < 0) + *ret = done; + else + *ret += done; } int ninet_hooks_register(void) -- Gitee From 2190bdc985e369d016b43510981fe5b1163e7c52 Mon Sep 17 00:00:00 2001 From: liangbotong Date: Wed, 28 Dec 2022 10:13:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?newip=E5=86=85=E6=A0=B8=E6=8F=92=E6=A1=A9?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=95=B4=E6=94=B9=EF=BC=88SIOCGIFCONF?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liangbotong --- src/linux/net/newip/nip_hooks_register.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/linux/net/newip/nip_hooks_register.c b/src/linux/net/newip/nip_hooks_register.c index d461ceb..a88ab8f 100644 --- a/src/linux/net/newip/nip_hooks_register.c +++ b/src/linux/net/newip/nip_hooks_register.c @@ -20,12 +20,14 @@ void ninet_ehashfn_hook(void *data, const struct sock *sk, u32 *ret) void ninet_gifconf_hook(void *data, struct net_device *dev, char __user *buf, int len, int size, int *ret) { - int done = ninet_gifconf(dev, buf + *ret, len - *ret, size); + if (*ret >= 0) { + int done = ninet_gifconf(dev, buf + *ret, len - *ret, size); - if (done < 0) - *ret = done; - else - *ret += done; + if (done < 0) + *ret = done; + else + *ret += done; + } } int ninet_hooks_register(void) -- Gitee