diff options
author | 2005-04-17 16:41:21 +0000 | |
---|---|---|
committer | 2005-04-17 16:41:21 +0000 | |
commit | 1f13f9fdd5c0957d4a624842abe8cdc1b1d79739 (patch) | |
tree | f9a8c125b5037ff6d4b6717069f9b8c230f01e44 | |
parent | fix null pointer deref on filter rules without set part (diff) | |
download | wireguard-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.y | 12 |
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); } |