-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merging 1135 fix flag parsing (#1356)
* Fix regression in handling flag-values starting with hyphen Fix for a regression between v1.22.1 and v1.22.2, where flag values starting with a hyphen would be parsed as a flag: runc update test_update --memory-swap -1 Incorrect Usage: flag provided but not defined: -1 This problem was caused by `reorderArgs()` not properly checking if the next arg in the list was a value for the flag (and not the next flag); Before this patch: args before reordering: --opt,--opt-value,arg1 args after reordering: --opt,arg1,--opt-value args before reordering: --opt,--opt-value,arg1,arg2 args after reordering: --opt,arg1,--opt-value,arg2 args before reordering: arg1,--opt,--opt-value,arg2 args after reordering: --opt,arg2,arg1,--opt-value After this patch is applied: args before reordering: --opt,--opt-value,arg1 args after reordering: --opt,--opt-value,arg1 args before reordering: --opt,--opt-value,arg1,arg2 args after reordering: --opt,--opt-value,arg1,arg2 args before reordering: arg1,--opt,--opt-value,arg2 args after reordering: --opt,--opt-value,arg1,arg2 Co-authored-by: lynn (they) <[email protected]> Signed-off-by: Sebastiaan van Stijn <[email protected]> * Fix handling of -- delimiter If a `--` delimiter is encountered, any remaining _non-option-value_ arguments must be handled as argument. From the POSIX spec (emphasis mine) https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_0): > The first -- argument that *is not an option-argument* should be accepted > as a delimiter indicating the end of options. Any following arguments > should be treated as operands, even if they begin with the '-' character. There was a corner-case scenario, where a `--flag` followed by a `--` did not use `--` as value for the flag, but instead considered it as delimiter. As a result; foo test arg1 --opt -- arg2 Would be reordered as: foo test --opt arg1 arg2 Which caused `arg1` to be used as value for `--opt`, instead of `--`, which is the actual value. Signed-off-by: Sebastiaan van Stijn <[email protected]> Co-authored-by: Sebastiaan van Stijn <[email protected]> Co-authored-by: lynn (they) <[email protected]>
- Loading branch information
1 parent
8d987df
commit b963ddc
Showing
3 changed files
with
97 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters