From 7f620b45fedfa4bde2f75f9bb9ced49272d1a5d1 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sun, 24 Aug 2014 21:13:38 +0200 Subject: [PATCH] sanitize pincode properly Signed-off-by: John Crispin --- cli.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/cli.c b/cli.c index 1f043d5..86fe726 100644 --- a/cli.c +++ b/cli.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -335,6 +336,24 @@ mbim_disconnect_request(void) return mbim_send_command_msg(); } +static char* +mbim_pin_sanitize(char *pin) +{ + char *p; + + while (*pin && !isdigit(*pin)) + pin++; + p = pin; + if (!*p) + return NULL; + while (*pin && isdigit(*pin)) + pin++; + if (*pin) + *pin = '\0'; + + return p; +} + static int mbim_pin_unlock_request(void) { @@ -342,6 +361,12 @@ mbim_pin_unlock_request(void) (struct mbim_basic_connect_pin_s *) mbim_setup_command_msg(basic_connect, MBIM_MESSAGE_COMMAND_TYPE_SET, MBIM_CMD_BASIC_CONNECT_PIN, sizeof(struct mbim_basic_connect_pin_s)); + char *pin = mbim_pin_sanitize(_argv[0]); + + if (!pin || !strlen(pin)) { + fprintf(stderr, "failed to sanitize the pincode\n"); + return -1; + } p->pintype = htole32(MBIM_PIN_TYPE_PIN1); p->pinoperation = htole32(MBIM_PIN_OPERATION_ENTER); -- 2.25.1