diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-12-16 19:07:39 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-12-16 19:07:39 +0000 |
commit | 9af6aa4a33694591cbbaa4be94d6b22b5455687d (patch) | |
tree | 0eaeb4dc397b14ec84b9955c9eec72a970856928 /src/scalarproduct/gnunet-service-scalarproduct_bob.c | |
parent | 277c2a0c17432308c71275a2ddc5dcf11e289d81 (diff) | |
download | gnunet-9af6aa4a33694591cbbaa4be94d6b22b5455687d.tar.gz gnunet-9af6aa4a33694591cbbaa4be94d6b22b5455687d.zip |
-fix leak on error handling path
Diffstat (limited to 'src/scalarproduct/gnunet-service-scalarproduct_bob.c')
-rw-r--r-- | src/scalarproduct/gnunet-service-scalarproduct_bob.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/scalarproduct/gnunet-service-scalarproduct_bob.c b/src/scalarproduct/gnunet-service-scalarproduct_bob.c index 4a9ec5873..6d41668e3 100644 --- a/src/scalarproduct/gnunet-service-scalarproduct_bob.c +++ b/src/scalarproduct/gnunet-service-scalarproduct_bob.c | |||
@@ -770,7 +770,7 @@ compute_service_response (struct BobServiceSession *session) | |||
770 | &r[i])) | 770 | &r[i])) |
771 | { | 771 | { |
772 | GNUNET_break_op (0); | 772 | GNUNET_break_op (0); |
773 | return GNUNET_SYSERR; | 773 | goto error_cleanup; |
774 | } | 774 | } |
775 | } | 775 | } |
776 | 776 | ||
@@ -793,7 +793,7 @@ compute_service_response (struct BobServiceSession *session) | |||
793 | &r_prime[i])) | 793 | &r_prime[i])) |
794 | { | 794 | { |
795 | GNUNET_break_op (0); | 795 | GNUNET_break_op (0); |
796 | return GNUNET_SYSERR; | 796 | goto error_cleanup; |
797 | } | 797 | } |
798 | } | 798 | } |
799 | gcry_mpi_release (tmp); | 799 | gcry_mpi_release (tmp); |
@@ -821,7 +821,6 @@ compute_service_response (struct BobServiceSession *session) | |||
821 | session->r = r; | 821 | session->r = r; |
822 | session->r_prime = r_prime; | 822 | session->r_prime = r_prime; |
823 | 823 | ||
824 | // release rand, b and a | ||
825 | for (i = 0; i < count; i++) | 824 | for (i = 0; i < count; i++) |
826 | gcry_mpi_release (rand[i]); | 825 | gcry_mpi_release (rand[i]); |
827 | GNUNET_free (session->e_a); | 826 | GNUNET_free (session->e_a); |
@@ -830,6 +829,17 @@ compute_service_response (struct BobServiceSession *session) | |||
830 | GNUNET_free (q); | 829 | GNUNET_free (q); |
831 | GNUNET_free (rand); | 830 | GNUNET_free (rand); |
832 | return GNUNET_OK; | 831 | return GNUNET_OK; |
832 | |||
833 | error_cleanup: | ||
834 | GNUNET_free (r); | ||
835 | GNUNET_free (r_prime); | ||
836 | gcry_mpi_release (tmp); | ||
837 | GNUNET_free (p); | ||
838 | GNUNET_free (q); | ||
839 | for (i = 0; i < count; i++) | ||
840 | gcry_mpi_release (rand[i]); | ||
841 | GNUNET_free (rand); | ||
842 | return GNUNET_SYSERR; | ||
833 | } | 843 | } |
834 | 844 | ||
835 | 845 | ||