diff --git a/src/modems/hayes.c b/src/modems/hayes.c index 787705e..576034b 100644 --- a/src/modems/hayes.c +++ b/src/modems/hayes.c @@ -4278,10 +4278,14 @@ static int _is_ussd_code(char const * number) if(number == NULL || number[0] != '*') return 0; for(number++; *number != '\0'; number++) - if((*number >= '0' && *number <= '9') || *number == '*') + if(*number == '#') + { + if(*(number + 1) == '\0') + return 1; + continue; + } + else if((*number >= '0' && *number <= '9') || *number == '*') continue; - else if(*number == '#' && *(number + 1) == '\0') - return 1; else return 0; return 0; diff --git a/tests/ussd.c b/tests/ussd.c index 84abd89..9c7786f 100644 --- a/tests/ussd.c +++ b/tests/ussd.c @@ -31,7 +31,7 @@ static int _ussd(void) { int ret = 0; const char * codes[] = { "*100#", "*109*72348937857623#" }; - const char * notcodes[] = { "*#06#" }; + const char * notcodes[] = { "*#06#0" }; size_t i; for(i = 0; i < sizeof(codes) / sizeof(*codes); i++)