Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/net/npf Add missing cases, to prevent memory corruption.



details:   https://anonhg.NetBSD.org/src/rev/336040b6a49f
branches:  trunk
changeset: 974962:336040b6a49f
user:      maxv <maxv%NetBSD.org@localhost>
date:      Tue Aug 18 07:53:24 2020 +0000

description:
Add missing cases, to prevent memory corruption.

Reported-by: syzbot+f8b8a689a3560dda27f7%syzkaller.appspotmail.com@localhost

diffstat:

 sys/net/npf/npf_os.c |  14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diffs (37 lines):

diff -r 21e231ba6fd6 -r 336040b6a49f sys/net/npf/npf_os.c
--- a/sys/net/npf/npf_os.c      Tue Aug 18 07:41:41 2020 +0000
+++ b/sys/net/npf/npf_os.c      Tue Aug 18 07:53:24 2020 +0000
@@ -33,7 +33,7 @@
 
 #ifdef _KERNEL
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_os.c,v 1.18 2020/05/30 14:16:56 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_os.c,v 1.19 2020/08/18 07:53:24 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "pf.h"
@@ -268,15 +268,21 @@
        case IOC_NPF_VERSION:
                *(int *)data = NPF_VERSION;
                return 0;
-
        case IOC_NPF_SWITCH:
                return npfctl_switch(data);
-
        case IOC_NPF_TABLE:
                return npfctl_table(npf, data);
-
        case IOC_NPF_STATS:
                return npf_stats_export(npf, data);
+       case IOC_NPF_LOAD:
+       case IOC_NPF_SAVE:
+       case IOC_NPF_RULE:
+       case IOC_NPF_CONN_LOOKUP:
+       case IOC_NPF_TABLE_REPLACE:
+               /* nvlist_ref_t argument, handled below */
+               break;
+       default:
+               return EINVAL;
        }
 
        error = nvlist_copyin(data, &req, NPF_IOCTL_DATA_LIMIT);



Home | Main Index | Thread Index | Old Index