]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhf14b.c
chg; no more crash when getting partial usb packages.
[proxmark3-svn] / client / cmdhf14b.c
index cb93b1fc36e2017c00b8e27259e74bde2dde74fd..939f097636d9b37d6e3fdfb67a8ec9fc55249700 100644 (file)
@@ -848,24 +848,28 @@ bool waitCmd(bool verbose) {
 
     if (WaitForResponseTimeout(CMD_ACK, &resp, TIMEOUT)) {
 
 
     if (WaitForResponseTimeout(CMD_ACK, &resp, TIMEOUT)) {
 
-               status = (resp.arg[0] & 0xFFFF);
+               status = (resp.arg[0] & 0xFF);
                if ( status > 0 ) return FALSE;
                if ( status > 0 ) return FALSE;
-               
+                       
                len = (resp.arg[1] & 0xFFFF);
                len = (resp.arg[1] & 0xFFFF);
+               
                memcpy(data, resp.d.asBytes, len);
                
                if (verbose) {
                memcpy(data, resp.d.asBytes, len);
                
                if (verbose) {
-                       
-                       ComputeCrc14443(CRC_14443_B, data, len-2, &b1, &b2);
-                       crc = ( data[len-2] == b1 && data[len-1] == b2);
-                       
-                       PrintAndLog("[LEN %u] %s[%02X %02X] %s",
-                               len,
-                               sprint_hex(data, len-2),
-                               data[len-2],
-                               data[len-1],
-                               (crc) ? "OK" : "FAIL"
-                       );
+                       if ( len >= 3 ) {
+                               ComputeCrc14443(CRC_14443_B, data, len-2, &b1, &b2);
+                               crc = ( data[len-2] == b1 && data[len-1] == b2);
+               
+                               PrintAndLog("[LEN %u] %s[%02X %02X] %s",
+                                       len,
+                                       sprint_hex(data, len-2),
+                                       data[len-2],
+                                       data[len-1],
+                                       (crc) ? "OK" : "FAIL"
+                               );
+                       } else {
+                               PrintAndLog("[LEN %u] %s", len, sprint_hex(data, len) );
+                       }
                }       
                return TRUE;
     } else {
                }       
                return TRUE;
     } else {
Impressum, Datenschutz