Module Name:    src
Committed By:   rmind
Date:           Wed Aug 15 18:44:57 UTC 2012

Modified Files:
        src/lib/libnpf: npf.c
        src/sys/net/npf: npf_ctl.c npf_nat.c

Log Message:
- {npf_mk_rproc,npf_nat_save}: fix the fetching of {rproc-ptr,id_ptr}.
- npf_rproc_setlog: initialise variables to 0, as keys may not exist.

Bugs found by mlelstv@ while testing on Amiga.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/lib/libnpf/npf.c
cvs rdiff -u -r1.16 -r1.17 src/sys/net/npf/npf_ctl.c \
    src/sys/net/npf/npf_nat.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libnpf/npf.c
diff -u src/lib/libnpf/npf.c:1.11 src/lib/libnpf/npf.c:1.12
--- src/lib/libnpf/npf.c:1.11	Sun Aug 12 03:35:14 2012
+++ src/lib/libnpf/npf.c	Wed Aug 15 18:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf.c,v 1.11 2012/08/12 03:35:14 rmind Exp $	*/
+/*	$NetBSD: npf.c,v 1.12 2012/08/15 18:44:56 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2010-2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf.c,v 1.11 2012/08/12 03:35:14 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf.c,v 1.12 2012/08/15 18:44:56 rmind Exp $");
 
 #include <sys/types.h>
 #include <netinet/in_systm.h>
@@ -456,7 +456,7 @@ _npf_rproc_setnorm(nl_rproc_t *rp, bool 
     u_int maxmss)
 {
 	prop_dictionary_t rpdict = rp->nrp_dict;
-	uint32_t fl;
+	uint32_t fl = 0;
 
 	prop_dictionary_set_bool(rpdict, "randomize-id", rnd);
 	prop_dictionary_set_bool(rpdict, "no-df", no_df);
@@ -472,7 +472,7 @@ int
 _npf_rproc_setlog(nl_rproc_t *rp, u_int if_idx)
 {
 	prop_dictionary_t rpdict = rp->nrp_dict;
-	uint32_t fl;
+	uint32_t fl = 0;
 
 	prop_dictionary_set_uint32(rpdict, "log-interface", if_idx);
 

Index: src/sys/net/npf/npf_ctl.c
diff -u src/sys/net/npf/npf_ctl.c:1.16 src/sys/net/npf/npf_ctl.c:1.17
--- src/sys/net/npf/npf_ctl.c:1.16	Sun Jul 15 00:23:00 2012
+++ src/sys/net/npf/npf_ctl.c	Wed Aug 15 18:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_ctl.c,v 1.16 2012/07/15 00:23:00 rmind Exp $	*/
+/*	$NetBSD: npf_ctl.c,v 1.17 2012/08/15 18:44:56 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2009-2012 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_ctl.c,v 1.16 2012/07/15 00:23:00 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_ctl.c,v 1.17 2012/08/15 18:44:56 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -164,6 +164,7 @@ npf_mk_rproc(prop_array_t rprocs, const 
 	prop_object_iterator_t it;
 	prop_dictionary_t rpdict;
 	npf_rproc_t *rp;
+	uint64_t rpval;
 
 	it = prop_array_iterator(rprocs);
 	while ((rpdict = prop_object_iterator_next(it)) != NULL) {
@@ -178,10 +179,12 @@ npf_mk_rproc(prop_array_t rprocs, const 
 		return NULL;
 	}
 	CTASSERT(sizeof(uintptr_t) <= sizeof(uint64_t));
-	if (!prop_dictionary_get_uint64(rpdict, "rproc-ptr", (uint64_t *)&rp)) {
+	if (!prop_dictionary_get_uint64(rpdict, "rproc-ptr", &rpval)) {
 		rp = npf_rproc_create(rpdict);
-		prop_dictionary_set_uint64(rpdict, "rproc-ptr",
-		    (uint64_t)(uintptr_t)rp);
+		rpval = (uint64_t)(uintptr_t)rp;
+		prop_dictionary_set_uint64(rpdict, "rproc-ptr", rpval);
+	} else {
+		rp = (npf_rproc_t *)(uintptr_t)rpval;
 	}
 	return rp;
 }
Index: src/sys/net/npf/npf_nat.c
diff -u src/sys/net/npf/npf_nat.c:1.16 src/sys/net/npf/npf_nat.c:1.17
--- src/sys/net/npf/npf_nat.c:1.16	Sun Aug 12 03:35:14 2012
+++ src/sys/net/npf/npf_nat.c	Wed Aug 15 18:44:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_nat.c,v 1.16 2012/08/12 03:35:14 rmind Exp $	*/
+/*	$NetBSD: npf_nat.c,v 1.17 2012/08/15 18:44:56 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2010-2012 The NetBSD Foundation, Inc.
@@ -76,7 +76,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_nat.c,v 1.16 2012/08/12 03:35:14 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_nat.c,v 1.17 2012/08/15 18:44:56 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -751,7 +751,7 @@ npf_nat_save(prop_dictionary_t sedict, p
 	prop_object_iterator_t it;
 	prop_dictionary_t npdict;
 	prop_data_t nd, npd;
-	uintptr_t itnp;
+	uint64_t itnp;
 
 	/* Set NAT entry data. */
 	nd = prop_data_create_data(nt, sizeof(npf_nat_t));
@@ -762,8 +762,8 @@ npf_nat_save(prop_dictionary_t sedict, p
 	it = prop_array_iterator(natlist);
 	while ((npdict = prop_object_iterator_next(it)) != NULL) {
 		CTASSERT(sizeof(uintptr_t) <= sizeof(uint64_t));
-		prop_dictionary_get_uint64(npdict, "id-ptr", (uint64_t *)&itnp);
-		if (itnp == (uintptr_t)np) {
+		prop_dictionary_get_uint64(npdict, "id-ptr", &itnp);
+		if ((uintptr_t)itnp == (uintptr_t)np) {
 			break;
 		}
 	}

Reply via email to