aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Barksdale <amatus@amat.us>2017-10-08 08:58:01 -0500
committerDavid Barksdale <amatus@amat.us>2017-10-08 09:51:06 -0500
commit6107aebdf21a59834c3fe0eb6d3d664f1827c7bc (patch)
treea9ad6e74bac4b6f2e73a683ce4ec6354e25a46c2
parentc831b76d24e75c692ab6141f327d1a91d391f93b (diff)
downloadgnunet-6107aebdf21a59834c3fe0eb6d3d664f1827c7bc.tar.gz
gnunet-6107aebdf21a59834c3fe0eb6d3d664f1827c7bc.zip
Don't start multiple blacklist checks per ve
This fixes a use-after-free I was seeing.
-rw-r--r--src/transport/gnunet-service-transport_validation.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c
index 4a6d427be..5a8539f72 100644
--- a/src/transport/gnunet-service-transport_validation.c
+++ b/src/transport/gnunet-service-transport_validation.c
@@ -697,7 +697,6 @@ revalidate_address (void *cls)
697 struct GNUNET_TIME_Relative canonical_delay; 697 struct GNUNET_TIME_Relative canonical_delay;
698 struct GNUNET_TIME_Relative delay; 698 struct GNUNET_TIME_Relative delay;
699 struct GNUNET_TIME_Relative blocked_for; 699 struct GNUNET_TIME_Relative blocked_for;
700 struct GST_BlacklistCheck *bc;
701 uint32_t rdelay; 700 uint32_t rdelay;
702 701
703 ve->revalidation_task = NULL; 702 ve->revalidation_task = NULL;
@@ -784,15 +783,17 @@ revalidate_address (void *cls)
784 GNUNET_STATISTICS_update (GST_stats, 783 GNUNET_STATISTICS_update (GST_stats,
785 gettext_noop ("# address revalidations started"), 1, 784 gettext_noop ("# address revalidations started"), 1,
786 GNUNET_NO); 785 GNUNET_NO);
787 bc = GST_blacklist_test_allowed (&ve->address->peer, 786 if (NULL != ve->bc)
788 ve->address->transport_name, 787 {
789 &transmit_ping_if_allowed, 788 GST_blacklist_test_cancel (ve->bc);
790 ve, 789 ve->bc = NULL;
791 NULL, 790 }
792 NULL); 791 ve->bc = GST_blacklist_test_allowed (&ve->address->peer,
793 if (NULL != bc) 792 ve->address->transport_name,
794 ve->bc = bc; /* only set 'bc' if 'transmit_ping_if_allowed' was not already 793 &transmit_ping_if_allowed,
795 * called... */ 794 ve,
795 NULL,
796 NULL);
796} 797}
797 798
798 799