diff options
author | 2022-10-11 12:38:28 +0200 | |
---|---|---|
committer | 2022-10-11 12:38:28 +0200 | |
commit | d526c74e0562f7991bde3ec7d156cbf8b0b10bd5 (patch) | |
tree | 70a793311e482b0293fb4f0d014c2636e36af614 | |
parent | 0fe2ca4077fef9fda050ace39b549f63d3043462 (diff) | |
download | libirecovery-d526c74e0562f7991bde3ec7d156cbf8b0b10bd5.tar.gz libirecovery-d526c74e0562f7991bde3ec7d156cbf8b0b10bd5.tar.bz2 |
irecovery: Make sure to send certain commands with bRequest set to 1
-rw-r--r-- | tools/irecovery.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/tools/irecovery.c b/tools/irecovery.c index 392f912..faf0a92 100644 --- a/tools/irecovery.c +++ b/tools/irecovery.c | |||
@@ -199,6 +199,16 @@ static void print_devices() { | |||
199 | } | 199 | } |
200 | } | 200 | } |
201 | 201 | ||
202 | static int _is_breq_command(const char* cmd) | ||
203 | { | ||
204 | return ( | ||
205 | !strcmp(cmd, "go") | ||
206 | || !strcmp(cmd, "bootx") | ||
207 | || !strcmp(cmd, "reboot") | ||
208 | || !strcmp(cmd, "memboot") | ||
209 | ); | ||
210 | } | ||
211 | |||
202 | static void parse_command(irecv_client_t client, unsigned char* command, unsigned int size) { | 212 | static void parse_command(irecv_client_t client, unsigned char* command, unsigned int size) { |
203 | char* cmd = strdup((char*)command); | 213 | char* cmd = strdup((char*)command); |
204 | char* action = strtok(cmd, " "); | 214 | char* action = strtok(cmd, " "); |
@@ -269,7 +279,11 @@ static void init_shell(irecv_client_t client) { | |||
269 | 279 | ||
270 | char* cmd = readline("> "); | 280 | char* cmd = readline("> "); |
271 | if (cmd && *cmd) { | 281 | if (cmd && *cmd) { |
272 | error = irecv_send_command(client, cmd); | 282 | if (_is_breq_command(cmd)) { |
283 | error = irecv_send_command_breq(client, cmd, 1); | ||
284 | } else { | ||
285 | error = irecv_send_command(client, cmd); | ||
286 | } | ||
273 | if (error != IRECV_E_SUCCESS) { | 287 | if (error != IRECV_E_SUCCESS) { |
274 | quit = 1; | 288 | quit = 1; |
275 | } | 289 | } |
@@ -560,7 +574,11 @@ int main(int argc, char* argv[]) { | |||
560 | break; | 574 | break; |
561 | 575 | ||
562 | case kSendCommand: | 576 | case kSendCommand: |
563 | error = irecv_send_command(client, argument); | 577 | if (_is_breq_command(argument)) { |
578 | error = irecv_send_command_breq(client, argument, 1); | ||
579 | } else { | ||
580 | error = irecv_send_command(client, argument); | ||
581 | } | ||
564 | debug("%s\n", irecv_strerror(error)); | 582 | debug("%s\n", irecv_strerror(error)); |
565 | break; | 583 | break; |
566 | 584 | ||