summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2005-04-17 16:41:21 +0000
committerhenning <henning@openbsd.org>2005-04-17 16:41:21 +0000
commit1f13f9fdd5c0957d4a624842abe8cdc1b1d79739 (patch)
treef9a8c125b5037ff6d4b6717069f9b8c230f01e44
parentfix null pointer deref on filter rules without set part (diff)
downloadwireguard-openbsd-1f13f9fdd5c0957d4a624842abe8cdc1b1d79739.tar.xz
wireguard-openbsd-1f13f9fdd5c0957d4a624842abe8cdc1b1d79739.zip
and don't try to free a null set either
-rw-r--r--usr.sbin/bgpd/parse.y12
1 files changed, 7 insertions, 5 deletions
diff --git a/usr.sbin/bgpd/parse.y b/usr.sbin/bgpd/parse.y
index 8b5b8224155..dff6c9ae9a7 100644
--- a/usr.sbin/bgpd/parse.y
+++ b/usr.sbin/bgpd/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.160 2005/04/17 16:36:40 henning Exp $ */
+/* $OpenBSD: parse.y,v 1.161 2005/04/17 16:41:21 henning Exp $ */
/*
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -2105,11 +2105,13 @@ expand_rule(struct filter_rule *rule, struct filter_peers_l *peer,
free(a);
}
- while (set != NULL && (s = SIMPLEQ_FIRST(set)) != NULL) {
- SIMPLEQ_REMOVE_HEAD(set, entry);
- free(s);
+ if (set != NULL) {
+ while ((s = SIMPLEQ_FIRST(set)) != NULL) {
+ SIMPLEQ_REMOVE_HEAD(set, entry);
+ free(s);
+ }
+ free(set);
}
- free(set);
return (0);
}