[pulseaudio-discuss] [PATCH] core-util: Don't accept random words in pa_parse_boolean().

Tanu Kaskinen tanuk at iki.fi
Fri Mar 29 07:53:13 PDT 2013


On Wednesday, June 13, 2012 11:15:03 AM Tanu Kaskinen wrote:
> The old code accepted any word that started with "y", "Y",
> "n", "N", "t", "T", "f" or "F". Fix this by having
> a whitelist of full strings instead of checking just the
> first letter.
> ---
>  src/pulsecore/core-util.c |    6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
> index d79d289..e785cdc 100644
> --- a/src/pulsecore/core-util.c
> +++ b/src/pulsecore/core-util.c
> @@ -892,9 +892,11 @@ int pa_parse_boolean(const char *v) {
>      pa_assert(v);
> 
>      /* First we check language independent */
> -    if (pa_streq(v, "1") || v[0] == 'y' || v[0] == 'Y' || v[0] == 't' ||
> v[0] == 'T' || !strcasecmp(v, "on")) +    if (pa_streq(v, "1") ||
> !strcasecmp(v, "y") || !strcasecmp(v, "t") +            || !strcasecmp(v,
> "yes") || !strcasecmp(v, "true") || !strcasecmp(v, "on")) return 1;
> -    else if (pa_streq(v, "0") || v[0] == 'n' || v[0] == 'N' || v[0] == 'f'
> || v[0] == 'F' || !strcasecmp(v, "off")) +    else if (pa_streq(v, "0") ||
> !strcasecmp(v, "n") || !strcasecmp(v, "f") +                 ||
> !strcasecmp(v, "no") || !strcasecmp(v, "false") || !strcasecmp(v, "off"))
> return 0;
> 
>  #ifdef HAVE_LANGINFO_H

No feedback received. I applied this to the next branch.

-- 
Tanu


More information about the pulseaudio-discuss mailing list