From: pwpiwi <pwpiwi@users.noreply.github.com>
Date: Thu, 18 Dec 2014 18:40:35 +0000 (+0100)
Subject: bugfixes hf epa cnonces
X-Git-Tag: v2.0.0-rc1~81
X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/57642f63fa9440e6e5e19841c5dd98dee9f5eaa5?ds=inline;hp=--cc

bugfixes hf epa cnonces
- extended length (more than 1 byte) not handled correctly
- nonces not printed on Windows due to type mismatch
---

57642f63fa9440e6e5e19841c5dd98dee9f5eaa5
diff --git a/armsrc/epa.c b/armsrc/epa.c
index 497bd9de..fb19656d 100644
--- a/armsrc/epa.c
+++ b/armsrc/epa.c
@@ -108,9 +108,9 @@ size_t EPA_Parse_CardAccess(uint8_t *data,
 		if (data[index] == 0x31 || data[index] == 0x30) {
 			// enter the set (skip tag + length)
 			index += 2;
-			// extended length
+			// check for extended length
 			if ((data[index - 1] & 0x80) != 0) {
-				index += (data[index] & 0x7F);
+				index += (data[index-1] & 0x7F);
 			}
 		}
 		// OID
diff --git a/client/cmdhfepa.c b/client/cmdhfepa.c
index 8a36d6ae..8f6a6af2 100644
--- a/client/cmdhfepa.c
+++ b/client/cmdhfepa.c
@@ -54,10 +54,10 @@ int CmdHFEPACollectPACENonces(const char *Cmd)
 			size_t nonce_length = resp.arg[1];
 			char *nonce = (char *) malloc(2 * nonce_length + 1);
 			for(int j = 0; j < nonce_length; j++) {
-				snprintf(nonce + (2 * j), 3, "%02X", resp.d.asBytes[j]);
+				sprintf(nonce + (2 * j), "%02X", resp.d.asBytes[j]);
 			}
 			// print nonce
-			PrintAndLog("Length: %d, Nonce: %s",resp.arg[1], nonce);
+			PrintAndLog("Length: %d, Nonce: %s", nonce_length, nonce);
 		}
 		if (i < n - 1) {
 			sleep(d);