From 6e643aa432bf03f1035a01647222e500cd715f3f Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 29 Mar 2017 18:00:57 -0500 Subject: [PATCH] libpkgconf: hopefully the last necessary tweak to quoting... --- libpkgconf/argvsplit.c | 6 ++++-- libpkgconf/fragment.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libpkgconf/argvsplit.c b/libpkgconf/argvsplit.c index 8b7a243..85f7f57 100644 --- a/libpkgconf/argvsplit.c +++ b/libpkgconf/argvsplit.c @@ -88,8 +88,10 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv) } else { - if (!isspace((unsigned int) *src_iter)) - *dst_iter++ = *src_iter; + if (isspace((unsigned int) *src_iter)) + *dst_iter++ = '\\'; + + *dst_iter++ = *src_iter; } escaped = false; diff --git a/libpkgconf/fragment.c b/libpkgconf/fragment.c index 8a637e7..907a6e0 100644 --- a/libpkgconf/fragment.c +++ b/libpkgconf/fragment.c @@ -387,7 +387,7 @@ fragment_escape(const char *src) while (*src) { - if ((*src < ' ') || + if (((*src < ' ') || (*src > ' ' && *src < '$') || (*src > '$' && *src < '(') || (*src > ')' && *src < '+') || @@ -396,7 +396,7 @@ fragment_escape(const char *src) (*src > 'Z' && *src < '^') || (*src == '`') || (*src > 'z' && *src < '~') || - (*src > '~')) + (*src > '~')) && *src != '\\') *dst++ = '\\'; *dst++ = *src++;