aboutsummaryrefslogtreecommitdiff
path: root/src/scalarproduct/gnunet-service-scalarproduct_bob.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-12-16 19:07:39 +0000
committerChristian Grothoff <christian@grothoff.org>2014-12-16 19:07:39 +0000
commit9af6aa4a33694591cbbaa4be94d6b22b5455687d (patch)
tree0eaeb4dc397b14ec84b9955c9eec72a970856928 /src/scalarproduct/gnunet-service-scalarproduct_bob.c
parent277c2a0c17432308c71275a2ddc5dcf11e289d81 (diff)
downloadgnunet-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.c16
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