I think the cause here is staring us in the face; we have a do { ... } while(1) loop wrapping this code. The only escape are the 2 return statements. If neither trigger it'll spin, which is what the symptoms seem to indicate.
1) "-- " as a parameter
2) !len (in other words, len==0)
In the first call to __parse_cmdline() bool parse_aliases == true so the re-entrant call into itself with parse_aliases == false should be done if the memcmp() finds any of the alises[i].alias in the current option.
Now, in the example command lines I've seen, none of the aliases is present.
It surely cannot be coincidence though that we have:
I think the cause here is staring us in the face; we have a do { ... } while(1) loop wrapping this code. The only escape are the 2 return statements. If neither trigger it'll spin, which is what the symptoms seem to indicate.
1) "-- " as a parameter
2) !len (in other words, len==0)
In the first call to __parse_cmdline() bool parse_aliases == true so the re-entrant call into itself with parse_aliases == false should be done if the memcmp() finds any of the alises[i].alias in the current option.
Now, in the example command lines I've seen, none of the aliases is present.
It surely cannot be coincidence though that we have:
#define FTR_ALIAS_NAME_LEN 30 OPTION_ LEN 116 ALIAS_NAME_ LEN]; FTR_ALIAS_ OPTION_ LEN];
#define FTR_ALIAS_
...
static const struct {
char alias[FTR_
char feature[
} aliases[]
that means each element is 146 characters long - the length at which I can trigger the bug.