]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/reveng/reveng.c
FIX: 256 is too big for uint8_t
[proxmark3-svn] / client / reveng / reveng.c
index 3c6da126ab136b24f836dc983db1c07276bfd72e..d82353f8ad0d4046def9f7b0c22c5f12b5367373 100644 (file)
@@ -141,8 +141,10 @@ reveng(const model_t *guess, const poly_t qpoly, int rflags, int args, const pol
                engini(&resc, &result, guess->spoly, guess->flags, args, argpolys);
 
 requit:
-       if(!(result = realloc(result, ++resc * sizeof(model_t))))
+       if(!(result = realloc(result, ++resc * sizeof(model_t)))) {
                uerror("cannot reallocate result array");
+               return NULL;
+       }
        rptr = result + resc - 1;
        rptr->spoly  = pzero;
        rptr->init   = pzero;
@@ -257,6 +259,7 @@ engini(int *resc, model_t **result, const poly_t divisor, int flags, int args, c
                palloc(&apoly, dlen);
                calini(resc, result, divisor, flags, apoly, args, argpolys);
                pfree(&apoly);
+               free(mat);
                return;
        }
 
@@ -470,9 +473,12 @@ chkres(int *resc, model_t **result, const poly_t divisor, const poly_t init, int
        pfree(&xor);
        if(aptr != eptr) return;
 
-       if(!(*result = realloc(*result, ++*resc * sizeof(model_t))))
+       *result = realloc(*result, ++*resc * sizeof(model_t));
+       if (!*result) {
                uerror("cannot reallocate result array");
-
+               return;
+       }
+       
        rptr = *result + *resc - 1;
        rptr->spoly  = pclone(divisor);
        rptr->init   = pclone(init);
Impressum, Datenschutz