summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreric <eric@openbsd.org>2013-06-04 08:16:10 +0000
committereric <eric@openbsd.org>2013-06-04 08:16:10 +0000
commit7d590283b8aa94895487c34c1e917e81ed8eeb1c (patch)
tree451f49ebd7989ef61ee7f878aaf249575d12616a
parenttweak previous; (diff)
downloadwireguard-openbsd-7d590283b8aa94895487c34c1e917e81ed8eeb1c.tar.xz
wireguard-openbsd-7d590283b8aa94895487c34c1e917e81ed8eeb1c.zip
fix use-after-free in debug traces
-rw-r--r--usr.sbin/smtpd/mta.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/usr.sbin/smtpd/mta.c b/usr.sbin/smtpd/mta.c
index 14689b42c4e..825afa1fcd8 100644
--- a/usr.sbin/smtpd/mta.c
+++ b/usr.sbin/smtpd/mta.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mta.c,v 1.158 2013/06/03 16:04:03 eric Exp $ */
+/* $OpenBSD: mta.c,v 1.159 2013/06/04 08:16:10 eric Exp $ */
/*
* Copyright (c) 2008 Pierre-Yves Ritschard <pyr@openbsd.org>
@@ -1255,6 +1255,9 @@ mta_relay_unref(struct mta_relay *relay)
log_debug("debug: mta: freeing %s", mta_relay_to_text(relay));
SPLAY_REMOVE(mta_relay_tree, &relays, relay);
+ while ((tree_poproot(&relay->connectors, NULL, (void**)&c)))
+ mta_connector_free(c);
+
free(relay->authlabel);
free(relay->authtable);
free(relay->backupname);
@@ -1263,9 +1266,6 @@ mta_relay_unref(struct mta_relay *relay)
free(relay->secret);
free(relay->sourcetable);
- while ((tree_poproot(&relay->connectors, NULL, (void**)&c)))
- mta_connector_free(c);
-
if (evtimer_pending(&relay->ev, NULL))
evtimer_del(&relay->ev);