diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-10-05 12:13:09 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-10-05 12:13:09 +0000 |
commit | 7a05042e7e4982725669f0d12846052e2ceb1701 (patch) | |
tree | b2c6d05fd1fe7ca6e4022397bf7d02e25fa43a25 /src/dht | |
parent | 0d24b3403ac13a75e42407c0c0f9af69a95f87f2 (diff) | |
download | gnunet-7a05042e7e4982725669f0d12846052e2ceb1701.tar.gz gnunet-7a05042e7e4982725669f0d12846052e2ceb1701.zip |
-fix leak
Diffstat (limited to 'src/dht')
-rw-r--r-- | src/dht/gnunet-service-xdht_neighbours.c | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/src/dht/gnunet-service-xdht_neighbours.c b/src/dht/gnunet-service-xdht_neighbours.c index eee5d8f5f..52b410aff 100644 --- a/src/dht/gnunet-service-xdht_neighbours.c +++ b/src/dht/gnunet-service-xdht_neighbours.c | |||
@@ -4693,15 +4693,16 @@ get_trail_src_to_curr_pred (struct GNUNET_PeerIdentity source_peer, | |||
4693 | struct FingerInfo *current_predecessor; | 4693 | struct FingerInfo *current_predecessor; |
4694 | int i; | 4694 | int i; |
4695 | unsigned int j; | 4695 | unsigned int j; |
4696 | unsigned int len; | ||
4696 | 4697 | ||
4697 | current_predecessor = &finger_table[PREDECESSOR_FINGER_ID]; | 4698 | current_predecessor = &finger_table[PREDECESSOR_FINGER_ID]; |
4698 | 4699 | ||
4699 | /* Check if trail_src_to_me contains current_predecessor. */ | 4700 | /* Check if trail_src_to_me contains current_predecessor. */ |
4700 | for (i = 0; i < trail_src_to_me_len; i++) | 4701 | for (i = 0; i < trail_src_to_me_len; i++) |
4701 | { | 4702 | { |
4702 | if(0 != GNUNET_CRYPTO_cmp_peer_identity(&trail_src_to_me[i], | 4703 | if (0 != GNUNET_CRYPTO_cmp_peer_identity(&trail_src_to_me[i], |
4703 | ¤t_predecessor->finger_identity)) | 4704 | ¤t_predecessor->finger_identity)) |
4704 | continue; | 4705 | continue; |
4705 | 4706 | ||
4706 | 4707 | ||
4707 | *trail_src_to_curr_pred_length = i; | 4708 | *trail_src_to_curr_pred_length = i; |
@@ -4711,7 +4712,7 @@ get_trail_src_to_curr_pred (struct GNUNET_PeerIdentity source_peer, | |||
4711 | 4712 | ||
4712 | trail_src_to_curr_pred = GNUNET_malloc (*trail_src_to_curr_pred_length * | 4713 | trail_src_to_curr_pred = GNUNET_malloc (*trail_src_to_curr_pred_length * |
4713 | sizeof(struct GNUNET_PeerIdentity)); | 4714 | sizeof(struct GNUNET_PeerIdentity)); |
4714 | for(j = 0; j < i;j++) | 4715 | for (j = 0; j < i; j++) |
4715 | trail_src_to_curr_pred[j] = trail_src_to_me[j]; | 4716 | trail_src_to_curr_pred[j] = trail_src_to_me[j]; |
4716 | return trail_src_to_curr_pred; | 4717 | return trail_src_to_curr_pred; |
4717 | } | 4718 | } |
@@ -4721,36 +4722,34 @@ get_trail_src_to_curr_pred (struct GNUNET_PeerIdentity source_peer, | |||
4721 | &trail_me_to_curr_pred_length); | 4722 | &trail_me_to_curr_pred_length); |
4722 | 4723 | ||
4723 | /* Check if trail contains the source_peer. */ | 4724 | /* Check if trail contains the source_peer. */ |
4724 | for(i = trail_me_to_curr_pred_length - 1; i >= 0; i--) | 4725 | for (i = trail_me_to_curr_pred_length - 1; i >= 0; i--) |
4725 | { | 4726 | { |
4726 | if(0 != GNUNET_CRYPTO_cmp_peer_identity (&source_peer, | 4727 | if (0 != GNUNET_CRYPTO_cmp_peer_identity (&source_peer, |
4727 | &trail_me_to_curr_pred[i])) | 4728 | &trail_me_to_curr_pred[i])) |
4728 | continue; | 4729 | continue; |
4729 | 4730 | ||
4730 | /* Source is NOT part of trail. */ | 4731 | /* Source is NOT part of trail. */ |
4731 | i = i+1; | 4732 | i++; |
4732 | 4733 | ||
4733 | /* Source is the last element in the trail to reach to my pred. | 4734 | /* Source is the last element in the trail to reach to my pred. |
4734 | Source is direct friend of the pred. */ | 4735 | Source is direct friend of the pred. */ |
4735 | if (trail_me_to_curr_pred_length == i) | 4736 | if (trail_me_to_curr_pred_length == i) |
4736 | { | 4737 | { |
4737 | *trail_src_to_curr_pred_length = 0; | 4738 | *trail_src_to_curr_pred_length = 0; |
4738 | return NULL; | 4739 | GNUNET_free_non_null (trail_me_to_curr_pred); |
4739 | } | 4740 | return NULL; |
4740 | 4741 | } | |
4741 | *trail_src_to_curr_pred_length = trail_me_to_curr_pred_length - i; | 4742 | |
4742 | trail_src_to_curr_pred = GNUNET_malloc (sizeof (struct GNUNET_PeerIdentity)* | 4743 | *trail_src_to_curr_pred_length = trail_me_to_curr_pred_length - i; |
4743 | *trail_src_to_curr_pred_length); | 4744 | trail_src_to_curr_pred = GNUNET_malloc (sizeof (struct GNUNET_PeerIdentity)* |
4744 | 4745 | *trail_src_to_curr_pred_length); | |
4745 | for(j = 0; j < *trail_src_to_curr_pred_length; i++,j++) | 4746 | |
4746 | { | 4747 | for (j = 0; j < *trail_src_to_curr_pred_length; i++,j++) |
4747 | trail_src_to_curr_pred[j] = trail_me_to_curr_pred[i]; | 4748 | trail_src_to_curr_pred[j] = trail_me_to_curr_pred[i]; |
4748 | } | 4749 | GNUNET_free_non_null (trail_me_to_curr_pred); |
4749 | GNUNET_free_non_null(trail_me_to_curr_pred); | 4750 | return trail_src_to_curr_pred; |
4750 | return trail_src_to_curr_pred; | ||
4751 | } | 4751 | } |
4752 | 4752 | ||
4753 | unsigned int len; | ||
4754 | trail_src_to_curr_pred = check_for_duplicate_entries (trail_src_to_me, | 4753 | trail_src_to_curr_pred = check_for_duplicate_entries (trail_src_to_me, |
4755 | trail_src_to_me_len, | 4754 | trail_src_to_me_len, |
4756 | trail_me_to_curr_pred, | 4755 | trail_me_to_curr_pred, |