X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/da198be4b5ae28a3d1c711b31081aba5af33ed6d..514ddaa2ff936ded76554a2ad97f6fe978c6f86e:/armsrc/crapto1.c?ds=sidebyside

diff --git a/armsrc/crapto1.c b/armsrc/crapto1.c
index a6b6da4d..e2058651 100644
--- a/armsrc/crapto1.c
+++ b/armsrc/crapto1.c
@@ -419,10 +419,11 @@ static uint16_t *dist = 0;
 int nonce_distance(uint32_t from, uint32_t to)
 {
 	uint16_t x, i;
-	if(!dist) {
+	// generate distance lookup table
+	if (!dist) {
 		dist = malloc(2 << 16);
-		if(!dist)
-			return -1;
+		if (!dist) return -1;
+		
 		for (x = i = 1; i; ++i) {
 			dist[(x & 0xff) << 8 | x >> 8] = i;
 			x = x >> 1 | (x ^ x >> 2 ^ x >> 3 ^ x >> 5) << 15;
@@ -446,7 +447,7 @@ static uint32_t fastfwd[2][8] = {
  * encrypt the NACK which is observed when varying only the 3 last bits of Nr
  * only correct iff [NR_3] ^ NR_3 does not depend on Nr_3
  */
-uint32_t *lfsr_prefix_ks(uint8_t ks[8], int isodd)
+uint32_t* lfsr_prefix_ks(uint8_t ks[8], int isodd)
 {
 	uint32_t *candidates = malloc(4 << 10);
 	if(!candidates) return 0;
@@ -520,9 +521,8 @@ struct Crypto1State* lfsr_common_prefix(uint32_t pfx, uint32_t rr, uint8_t ks[8]
 	s = statelist = malloc((sizeof *statelist) << 21);
 	if(!s || !odd || !even) {
 		free(statelist);
-		free(odd);
-		free(even);
-		return 0;
+		statelist = 0;
+		goto out;
 	}
 
 	for(o = odd; *o + 1; ++o)
@@ -534,7 +534,7 @@ struct Crypto1State* lfsr_common_prefix(uint32_t pfx, uint32_t rr, uint8_t ks[8]
 			}
 
 	s->odd = s->even = 0;
-
+out:
 	free(odd);
 	free(even);
 	return statelist;