]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/crapto1.c
Merge pull request #81 from mdp/fixguard
[proxmark3-svn] / armsrc / crapto1.c
index a6b6da4dbbfa31ccb4088099740da34b7118af2b..e2058651392f8ee96c593048de6c5af024515aeb 100644 (file)
@@ -419,10 +419,11 @@ static uint16_t *dist = 0;
 int nonce_distance(uint32_t from, uint32_t to)\r
 {\r
        uint16_t x, i;\r
-       if(!dist) {\r
+       // generate distance lookup table\r
+       if (!dist) {\r
                dist = malloc(2 << 16);\r
-               if(!dist)\r
-                       return -1;\r
+               if (!dist) return -1;\r
+               \r
                for (x = i = 1; i; ++i) {\r
                        dist[(x & 0xff) << 8 | x >> 8] = i;\r
                        x = x >> 1 | (x ^ x >> 2 ^ x >> 3 ^ x >> 5) << 15;\r
@@ -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\r
  * only correct iff [NR_3] ^ NR_3 does not depend on Nr_3\r
  */\r
-uint32_t *lfsr_prefix_ks(uint8_t ks[8], int isodd)\r
+uint32_tlfsr_prefix_ks(uint8_t ks[8], int isodd)\r
 {\r
        uint32_t *candidates = malloc(4 << 10);\r
        if(!candidates) return 0;\r
@@ -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);\r
        if(!s || !odd || !even) {\r
                free(statelist);\r
-               free(odd);\r
-               free(even);\r
-               return 0;\r
+               statelist = 0;\r
+               goto out;\r
        }\r
 \r
        for(o = odd; *o + 1; ++o)\r
@@ -534,7 +534,7 @@ struct Crypto1State* lfsr_common_prefix(uint32_t pfx, uint32_t rr, uint8_t ks[8]
                        }\r
 \r
        s->odd = s->even = 0;\r
-\r
+out:\r
        free(odd);\r
        free(even);\r
        return statelist;\r
Impressum, Datenschutz