diff options
author | Nikias Bassen | 2019-03-22 00:25:05 +0100 |
---|---|---|
committer | Nikias Bassen | 2019-03-22 00:25:05 +0100 |
commit | e0cef46e9c0fe6f4d45ac19a2ddaa74a33a5570e (patch) | |
tree | d83c3f252cc4e6a45081be1116a867cbd1e3d390 | |
parent | 8a882038b2b1e022fbd19eaf8bea51006a373c06 (diff) | |
download | idevicerestore-e0cef46e9c0fe6f4d45ac19a2ddaa74a33a5570e.tar.gz idevicerestore-e0cef46e9c0fe6f4d45ac19a2ddaa74a33a5570e.tar.bz2 |
Make sure user input can be cancelled properly
-rw-r--r-- | src/common.c | 5 | ||||
-rw-r--r-- | src/idevicerestore.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/common.c b/src/common.c index d4b7c8d..79dc123 100644 --- a/src/common.c +++ b/src/common.c @@ -527,7 +527,7 @@ void get_user_input(char *buf, int maxlen, int secure) int len = 0; int c; - while ((c = my_getch())) { + while ((c = my_getch()) > 0) { if ((c == '\r') || (c == '\n')) { break; } else if (isprint(c)) { @@ -541,6 +541,9 @@ void get_user_input(char *buf, int maxlen, int secure) } } } + if (c < 0) { + len = 0; + } fputs("\n", stdout); buf[len] = 0; } diff --git a/src/idevicerestore.c b/src/idevicerestore.c index f3e9160..ca6f232 100644 --- a/src/idevicerestore.c +++ b/src/idevicerestore.c @@ -371,6 +371,10 @@ int idevicerestore_start(struct idevicerestore_client_t* client) fflush(stdout); fflush(stdin); get_user_input(input, 63, 0); + if (*input == '\0') { + plist_free(signed_fws); + return -1; + } unsigned long selected = strtoul(input, NULL, 10); if (selected == 0 || selected > count) { printf("Invalid input value. Must be in range: 1..%d\n", count); |