diff options
author | 2014-07-10 00:05:59 +0000 | |
---|---|---|
committer | 2014-07-10 00:05:59 +0000 | |
commit | f8ffcebe263cf82c79ec2d7ce6a8ff35ffdbf0c6 (patch) | |
tree | a6f42a7fb2647107d04021b9517f17206f078255 | |
parent | Add some extra sanity checks to make sure the test functions actually (diff) | |
download | wireguard-openbsd-f8ffcebe263cf82c79ec2d7ce6a8ff35ffdbf0c6.tar.xz wireguard-openbsd-f8ffcebe263cf82c79ec2d7ce6a8ff35ffdbf0c6.zip |
Fix another free error.
ok benno@
-rw-r--r-- | usr.sbin/relayd/relay_http.c | 10 | ||||
-rw-r--r-- | usr.sbin/relayd/relayd.c | 4 |
2 files changed, 8 insertions, 6 deletions
diff --git a/usr.sbin/relayd/relay_http.c b/usr.sbin/relayd/relay_http.c index 239aaa09dec..facf0f93a07 100644 --- a/usr.sbin/relayd/relay_http.c +++ b/usr.sbin/relayd/relay_http.c @@ -1,4 +1,4 @@ -/* $OpenBSD: relay_http.c,v 1.20 2014/07/09 16:42:05 reyk Exp $ */ +/* $OpenBSD: relay_http.c,v 1.21 2014/07/10 00:05:59 reyk Exp $ */ /* * Copyright (c) 2006 - 2014 Reyk Floeter <reyk@openbsd.org> @@ -1411,6 +1411,9 @@ relay_apply_actions(struct ctl_relay_event *cre, struct kvlist *actions) char buf[IBUF_READ_SIZE], *ptr; enum httpheader hdrid; + memset(&kvcopy, 0, sizeof(kvcopy)); + memset(&matchcopy, 0, sizeof(matchcopy)); + ret = -1; kp = mp = NULL; TAILQ_FOREACH(kv, actions, kv_entry) { @@ -1600,10 +1603,7 @@ relay_apply_actions(struct ctl_relay_event *cre, struct kvlist *actions) TAILQ_REMOVE(actions, kv, kv_match_entry); kv_free(&kvcopy); - if (mp != NULL) { - kv_free(mp); - mp = NULL; - } + kv_free(&matchcopy); } ret = 0; diff --git a/usr.sbin/relayd/relayd.c b/usr.sbin/relayd/relayd.c index e18784c5093..38f29a6276e 100644 --- a/usr.sbin/relayd/relayd.c +++ b/usr.sbin/relayd/relayd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: relayd.c,v 1.127 2014/07/09 22:10:15 reyk Exp $ */ +/* $OpenBSD: relayd.c,v 1.128 2014/07/10 00:05:59 reyk Exp $ */ /* * Copyright (c) 2007 - 2014 Reyk Floeter <reyk@openbsd.org> @@ -738,6 +738,8 @@ kv_purge(struct kvlist *keys) void kv_free(struct kv *kv) { + if (kv->kv_type == KEY_TYPE_NONE) + return; if (kv->kv_key != NULL) { free(kv->kv_key); } |