revert removal of space handling, different fix for avoiding option prefix

matches
This commit is contained in:
Matt Johnston 2015-12-15 22:57:22 +08:00
parent da108a9327
commit 20bdf3a5b1

View File

@ -824,22 +824,34 @@ badport:
#endif
static int match_extendedopt(const char** strptr, const char *optname) {
int seen_eq = 0;
int optlen = strlen(optname);
const char *str = *strptr;
while (isspace(*str)) {
++str;
}
if (strncasecmp(str, optname, optlen) != 0) {
return DROPBEAR_FAILURE;
}
str += optlen;
if (*str == '=') {
*strptr = str+1;
return DROPBEAR_SUCCESS;
} else {
while (isspace(*str) || (!seen_eq && *str == '=')) {
if (*str == '=') {
seen_eq = 1;
}
++str;
}
if (str-*strptr == optlen) {
/* matched just a prefix of optname */
return DROPBEAR_FAILURE;
}
*strptr = str;
return DROPBEAR_SUCCESS;
}
static int parse_flag_value(const char *value) {