Message ID | 20170825161125.30392-1-jgross@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Aug 25, 2017 at 06:11:25PM +0200, Juergen Gross wrote: > parse_bool() should return -1 in case it is called with an empty > string. In order to allow boolean parameters in the cmdline without > specifying a value this case must be handled in _cmdline_parse() by > always passing a value string. > > This fixes commit 532dec8e31174ed450adfd36a4b0b41dec27010d ("xen: > add an optional string end parameter to parse_bool()") > > Signed-off-by: Juergen Gross <jgross@suse.com> Acked-by: Wei Liu <wei.liu2@citrix.com>
On 25/08/17 17:15, Wei Liu wrote: > On Fri, Aug 25, 2017 at 06:11:25PM +0200, Juergen Gross wrote: >> parse_bool() should return -1 in case it is called with an empty >> string. In order to allow boolean parameters in the cmdline without >> specifying a value this case must be handled in _cmdline_parse() by >> always passing a value string. >> >> This fixes commit 532dec8e31174ed450adfd36a4b0b41dec27010d ("xen: >> add an optional string end parameter to parse_bool()") >> >> Signed-off-by: Juergen Gross <jgross@suse.com> > Acked-by: Wei Liu <wei.liu2@citrix.com> I've exercised this with some of the more weird callers of parse_bool(), and everything appears to be in order. Tested, Reviewed and committed, thanks. ~Andrew
diff --git a/xen/common/kernel.c b/xen/common/kernel.c index ec7714961a..71bc547d17 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -114,7 +114,7 @@ static void __init _cmdline_parse(const char *cmdline) simple_strtoll(optval, NULL, 0)); break; case OPT_BOOL: - if ( !parse_bool(optval, NULL) ) + if ( !parse_bool(*optval ? optval : "yes", NULL) ) bool_assert = !bool_assert; assign_integer_param(param, bool_assert); break; @@ -168,6 +168,8 @@ int __init parse_bool(const char *s, const char *e) unsigned int len; len = e ? ({ ASSERT(e >= s); e - s; }) : strlen(s); + if ( !len ) + return -1; if ( !strncmp("no", s, len) || !strncmp("off", s, len) ||
parse_bool() should return -1 in case it is called with an empty string. In order to allow boolean parameters in the cmdline without specifying a value this case must be handled in _cmdline_parse() by always passing a value string. This fixes commit 532dec8e31174ed450adfd36a4b0b41dec27010d ("xen: add an optional string end parameter to parse_bool()") Signed-off-by: Juergen Gross <jgross@suse.com> --- xen/common/kernel.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)