]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
fixed 64-bit cmd/arg for windows
authorroel@libnfc.org <roel@libnfc.org@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Sun, 9 Dec 2012 13:00:19 +0000 (13:00 +0000)
committerroel@libnfc.org <roel@libnfc.org@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Sun, 9 Dec 2012 13:00:19 +0000 (13:00 +0000)
armsrc/appmain.c
armsrc/cmd.c
client/cmdmain.c
include/usb_cmd.h

index a7c830fa984a4dade02883b005e55f1d5ea7c253..bdd04757f7a7da13d6606ca4e4f179d836a2cd22 100644 (file)
@@ -79,7 +79,8 @@ void ToSendStuffBit(int b)
 
 void DbpString(char *str)
 {
 
 void DbpString(char *str)
 {
-  cmd_send(CMD_DEBUG_PRINT_STRING,strlen(str),0,0,(byte_t*)str,strlen(str));
+  byte_t len = strlen(str);
+  cmd_send(CMD_DEBUG_PRINT_STRING,len,0,0,(byte_t*)str,len);
 //     /* this holds up stuff unless we're connected to usb */
 //     if (!UsbConnected())
 //             return;
 //     /* this holds up stuff unless we're connected to usb */
 //     if (!UsbConnected())
 //             return;
index f64b4e409ece87b18f9242d74e31eb0dc29abc82..c414bc39c8cbb2cac075a05e1d20791d0d545e3c 100644 (file)
@@ -58,13 +58,13 @@ bool cmd_send(uint32_t cmd, uint32_t arg0, uint32_t arg1, uint32_t arg2, byte_t*
   // Compose the outgoing command frame\r
   txcmd.cmd = cmd;\r
   txcmd.arg[0] = arg0;\r
   // Compose the outgoing command frame\r
   txcmd.cmd = cmd;\r
   txcmd.arg[0] = arg0;\r
-  txcmd.arg[1] = arg1;\r
+  txcmd.arg[1] = arg1; \r
   txcmd.arg[2] = arg2;\r
 \r
   // Add the (optional) content to the frame, with a maximum size of USB_CMD_DATA_SIZE\r
   if (data && len) {\r
     memcpy(txcmd.d.asBytes,data,MIN(len,USB_CMD_DATA_SIZE));\r
   txcmd.arg[2] = arg2;\r
 \r
   // Add the (optional) content to the frame, with a maximum size of USB_CMD_DATA_SIZE\r
   if (data && len) {\r
     memcpy(txcmd.d.asBytes,data,MIN(len,USB_CMD_DATA_SIZE));\r
-  }\r
+         }\r
   \r
   // Send frame and make sure all bytes are transmitted\r
   if (usb_write((byte_t*)&txcmd,sizeof(UsbCommand)) != 0) return false;\r
   \r
   // Send frame and make sure all bytes are transmitted\r
   if (usb_write((byte_t*)&txcmd,sizeof(UsbCommand)) != 0) return false;\r
index 434f9e6e0f47bd72b48dad5896f7534af68e2f5d..2fdaabc12fd83fd3e68223e6c75a5ce50d0da0ec 100644 (file)
@@ -23,6 +23,7 @@
 #include "cmdhw.h"
 #include "cmdlf.h"
 #include "cmdmain.h"
 #include "cmdhw.h"
 #include "cmdlf.h"
 #include "cmdmain.h"
+#include "util.h"
 
 unsigned int current_command = CMD_UNKNOWN;
 unsigned int received_command = CMD_UNKNOWN;
 
 unsigned int current_command = CMD_UNKNOWN;
 unsigned int received_command = CMD_UNKNOWN;
@@ -99,17 +100,23 @@ void CommandReceived(char *Cmd) {
 //-----------------------------------------------------------------------------
 void UsbCommandReceived(UsbCommand *UC)
 {
 //-----------------------------------------------------------------------------
 void UsbCommandReceived(UsbCommand *UC)
 {
+  //  Debug
+  //  printf("UsbCommand length[len=%d]\n",sizeof(UsbCommand));
+  //  printf("  cmd[len=%d]: %x\n",sizeof(UC->cmd),UC->cmd);
+  //  printf(" arg0[len=%d]: %x\n",sizeof(UC->arg[0]),UC->arg[0]);
+  //  printf(" arg1[len=%d]: %x\n",sizeof(UC->arg[1]),UC->arg[1]);
+  //  printf(" arg2[len=%d]: %x\n",sizeof(UC->arg[2]),UC->arg[2]);
+  //  printf(" data[len=%d]: %02x%02x%02x...\n",sizeof(UC->d.asBytes),UC->d.asBytes[0],UC->d.asBytes[1],UC->d.asBytes[2]);
+
   //   printf("%s(%x) current cmd = %x\n", __FUNCTION__, c->cmd, current_command);
   //   printf("%s(%x) current cmd = %x\n", __FUNCTION__, c->cmd, current_command);
-  /* If we recognize a response, return to avoid further processing */
+  // If we recognize a response, return to avoid further processing
   switch(UC->cmd) {
   switch(UC->cmd) {
-    // First check if we are handling a debug message
+      // First check if we are handling a debug message
     case CMD_DEBUG_PRINT_STRING: {
     case CMD_DEBUG_PRINT_STRING: {
-      char s[100];
-      if(UC->arg[0] > 70 || UC->arg[0] < 0) {
-        UC->arg[0] = 0;
-      }
-      memcpy(s, UC->d.asBytes, UC->arg[0]);
-      s[UC->arg[0]] = '\0';
+      char s[USB_CMD_DATA_SIZE+1];
+      size_t len = MIN(UC->arg[0],USB_CMD_DATA_SIZE);
+      memcpy(s,UC->d.asBytes,len);
+      s[len] = 0x00;
       PrintAndLog("#db# %s       ", s);
       return;
     } break;
       PrintAndLog("#db# %s       ", s);
       return;
     } break;
index 45acfe420382bc7c3edb7daaeaf505afd9d56bc2..62c0acd78d07e485b50544fe72b65c5d4f6488f0 100644 (file)
@@ -35,10 +35,10 @@ typedef struct {
 #define USB_CMD_DATA_SIZE 512
 
 typedef struct {
 #define USB_CMD_DATA_SIZE 512
 
 typedef struct {
-  uint32_t cmd;
+  uint64_t cmd;
   uint64_t arg[3];
   union {
   uint64_t arg[3];
   union {
-    uint8_t     asBytes[USB_CMD_DATA_SIZE];
+    uint8_t  asBytes[USB_CMD_DATA_SIZE];
     uint32_t asDwords[USB_CMD_DATA_SIZE/4];
   } d;
 } PACKED UsbCommand;
     uint32_t asDwords[USB_CMD_DATA_SIZE/4];
   } d;
 } PACKED UsbCommand;
Impressum, Datenschutz