X-Git-Url: https://git.tld-linux.org/?p=packages%2Fdialog.git;a=blobdiff_plain;f=escaping_fix.patch;fp=escaping_fix.patch;h=0000000000000000000000000000000000000000;hp=2dffd8c1116179b0defad3cee95b5d8fec3f2f76;hb=09ba2389fea6e3273adc510dd6ae183585793e85;hpb=c5258666961bdd29cdd41ee6d00fae52de687e37 diff --git a/escaping_fix.patch b/escaping_fix.patch deleted file mode 100644 index 2dffd8c..0000000 --- a/escaping_fix.patch +++ /dev/null @@ -1,134 +0,0 @@ -diff -ur dialog-1.3-20160209.orig/argv.c dialog-1.3-20160209/argv.c ---- dialog-1.3-20160209.orig/argv.c 2015-05-13 00:34:39.000000000 +0000 -+++ dialog-1.3-20160209/argv.c 2016-02-11 10:41:08.705828223 +0000 -@@ -55,12 +55,18 @@ - ++count; - inparm = TRUE; - } -- } else if (!quoted && isspace(UCH(blob[n]))) { -- if (inparm) { -+ } else if (blob[n] == '\\') { -+ if (quoted && !isspace(UCH(blob[n + 1]))) { - if (pass) { -- *param++ = '\0'; -+ *param++ = blob[n]; -+ *param++ = blob[n + 1]; - } -- inparm = FALSE; -+ } -+ ++n; -+ } else if (!quoted && isspace(UCH(blob[n]))) { -+ inparm = FALSE; -+ if (pass) { -+ *param++ = '\0'; - } - } else { - if (!inparm) { -@@ -69,10 +75,6 @@ - ++count; - inparm = TRUE; - } -- if (blob[n] == '\\') { -- if (++n == length) -- break; /* The string is terminated by a backslash */ -- } - if (pass) { - *param++ = blob[n]; - } -diff -ur dialog-1.3-20160209.orig/dialog.c dialog-1.3-20160209/dialog.c ---- dialog-1.3-20160209.orig/dialog.c 2016-02-09 00:05:39.000000000 +0000 -+++ dialog-1.3-20160209/dialog.c 2016-02-11 10:41:08.707828223 +0000 -@@ -421,58 +421,49 @@ - blob[length] = '\0'; - - list = dlg_string_to_argv(blob); -- added = dlg_count_argv(list); -- if (added > 2) { -- /* *argcp arguments before the expansion of --file -- - 2 for the removal of '--file ' -- + added for the arguments contained in -- + 1 for the terminating NULL pointer */ -- size_t need = (size_t) (*argcp + added - 1); -- if (doalloc) { -- *argvp = dlg_realloc(char *, need, *argvp); -- assert_ptr(*argvp, "unescape_argv"); -- } else { -- char **newp = dlg_malloc(char *, need); -- assert_ptr(newp, "unescape_argv"); -- for (n = 0; n < *argcp; ++n) { -- newp[n] = (*argvp)[n]; -+ if ((added = dlg_count_argv(list)) != 0) { -+ if (added > 2) { -+ size_t need = (size_t) (*argcp + added + 1); -+ if (doalloc) { -+ *argvp = dlg_realloc(char *, need, *argvp); -+ assert_ptr(*argvp, "unescape_argv"); -+ } else { -+ char **newp = dlg_malloc(char *, need); -+ assert_ptr(newp, "unescape_argv"); -+ for (n = 0; n < *argcp; ++n) { -+ newp[n] = (*argvp)[n]; -+ } -+ *argvp = newp; -+ doalloc = TRUE; - } -- /* The new array is not NULL-terminated yet. */ -- *argvp = newp; -- doalloc = TRUE; -+ dialog_opts = dlg_realloc(bool, need, dialog_opts); -+ assert_ptr(dialog_opts, "unescape_argv"); - } -- dialog_opts = dlg_realloc(bool, need, dialog_opts); -- assert_ptr(dialog_opts, "unescape_argv"); -- -- /* Shift the arguments after '--file ' -- right by (added - 2) positions */ -- for (n = *argcp - 1; n >= j + 2; --n) { -- (*argvp)[n + added - 2] = (*argvp)[n]; -- dialog_opts[n + added - 2] = dialog_opts[n]; -+ if (added > 2) { -+ for (n = *argcp; n >= j + 2; --n) { -+ (*argvp)[n + added - 2] = (*argvp)[n]; -+ dialog_opts[n + added - 2] = dialog_opts[n]; -+ } -+ } else if (added == 1) { -+ for (n = j; n < *argcp; ++n) { -+ (*argvp)[n] = (*argvp)[n + 1]; -+ dialog_opts[n] = dialog_opts[n + 1]; -+ } - } -- } else if (added < 2) { -- /* 0 or 1 argument read from the included file -- -> shift the arguments after '--file ' -- left by (2 - added) positions */ -- for (n = j + added; n + 2 - added < *argcp; ++n) { -- (*argvp)[n] = (*argvp)[n + 2 - added]; -- dialog_opts[n] = dialog_opts[n + 2 - added]; -+ for (n = 0; n < added; ++n) { -+ (*argvp)[n + j] = list[n]; -+ dialog_opts[n + j] = FALSE; - } -+ *argcp += added - 2; -+ free(list); -+ --j; /* force rescan */ - } -- /* Copy the inserted arguments to *argvp */ -- for (n = 0; n < added; ++n) { -- (*argvp)[n + j] = list[n]; -- dialog_opts[n + j] = FALSE; -- } -- *argcp += added - 2; -- (*argvp)[*argcp] = 0; /* Write the NULL terminator */ -- free(list); /* No-op if 'list' is NULL */ -- /* Force rescan starting from the first inserted argument */ -- --j; -- continue; - } else { - dlg_exiterr("Cannot open --file %s", filename); - } -+ (*argvp)[*argcp] = 0; -+ ++j; -+ continue; - } else { - dlg_exiterr("No value given for --file"); - }