X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/ef9b8b2c2b55254a70127e3730fd8e964c5b8521..b98827ffc3b2d8ced5e750d763f077c509641e5c:/client/proxmark3.c diff --git a/client/proxmark3.c b/client/proxmark3.c index 907f5e7f..0fa55425 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -127,8 +127,8 @@ static void *main_loop(void *targ) { while(1) { // If there is a script file - if (script_file) - { + if (script_file) { + if (!fgets(script_cmd_buf, sizeof(script_cmd_buf), script_file)) { fclose(script_file); script_file = NULL; @@ -142,9 +142,10 @@ static void *main_loop(void *targ) { if (nl) *nl = '\0'; - - if ((cmd = (char*) malloc(strlen(script_cmd_buf) + 1)) != NULL) { - memset(cmd, 0, strlen(script_cmd_buf)); + + int newlen = strlen(script_cmd_buf); + if ((cmd = (char*) malloc( newlen + 1)) != NULL) { + memset(cmd, 0x00, newlen); strcpy(cmd, script_cmd_buf); printf("%s\n", cmd); } @@ -153,6 +154,8 @@ static void *main_loop(void *targ) { cmd = readline(PROXPROMPT); } + // this one should pick up all non-null cmd... + // why is there a if (cmd) { while(cmd[strlen(cmd) - 1] == ' ') @@ -166,26 +169,29 @@ static void *main_loop(void *targ) { if (ret == 99) break; } + free(cmd); + cmd = 0; } else { printf("\n"); break; } } - + + if (script_file) { + fclose(script_file); + script_file = NULL; + } + write_history(".history"); free(cmd); + cmd = 0; if (arg->usb_present == 1) { rarg.run = 0; pthread_join(reader_thread, NULL); } - if (script_file) { - fclose(script_file); - script_file = NULL; - } - ExitGraphics(); pthread_exit(NULL); return NULL;