diff --git a/client/cmdhflegic.c b/client/cmdhflegic.c index 916825812..4ad60e3b0 100644 --- a/client/cmdhflegic.c +++ b/client/cmdhflegic.c @@ -579,7 +579,10 @@ int CmdLegicCalcCrc8(const char *Cmd){ // peek at length of the input string so we can // figure out how many elements to malloc in "data" bg=en=0; - param_getptr(Cmd, &bg, &en, cmdp+1); + if (param_getptr(Cmd, &bg, &en, cmdp+1)) { + errors = true; + break; + } len = (en - bg + 1); // check that user entered even number of characters @@ -599,7 +602,10 @@ int CmdLegicCalcCrc8(const char *Cmd){ break; } - param_gethex(Cmd, cmdp+1, data, len); + if (param_gethex(Cmd, cmdp+1, data, len)) { + errors = true; + break; + } len >>= 1; cmdp += 2; diff --git a/client/util.c b/client/util.c index e81d76001..b2ac82ae1 100644 --- a/client/util.c +++ b/client/util.c @@ -221,7 +221,7 @@ void num_to_bytebitsLSBF(uint64_t n, size_t len, uint8_t *dest) { // hh,gg,ff,ee,dd,cc,bb,aa, pp,oo,nn,mm,ll,kk,jj,ii // up to 64 bytes or 512 bits uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockSize){ - uint8_t buf[64]; + static uint8_t buf[64]; memset(buf, 0x00, 64); uint8_t *tmp = buf; for (uint8_t block=0; block < (uint8_t)(len/blockSize); block++){ @@ -229,7 +229,7 @@ uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockS tmp[i+(blockSize*block)] = src[(blockSize-1-i)+(blockSize*block)]; } } - return tmp; + return buf; } // takes a uint8_t src array, for len items and reverses the byte order in blocksizes (8,16,32,64),