0004-Invoke-ed-directly-instead-of-using-the-shell.patch 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. From 3fcd042d26d70856e826a42b5f93dc4854d80bf0 Mon Sep 17 00:00:00 2001
  2. From: Andreas Gruenbacher <agruen@gnu.org>
  3. Date: Fri, 6 Apr 2018 19:36:15 +0200
  4. Subject: Invoke ed directly instead of using the shell
  5. * src/pch.c (do_ed_script): Invoke ed directly instead of using a shell
  6. command to avoid quoting vulnerabilities.
  7. [Retrieved from:
  8. https://git.savannah.gnu.org/cgit/patch.git/commit/?id=3fcd042d26d70856e826a42b5f93dc4854d80bf0]
  9. Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  10. ---
  11. src/pch.c | 6 ++----
  12. 1 file changed, 2 insertions(+), 4 deletions(-)
  13. diff --git a/src/pch.c b/src/pch.c
  14. index 4fd5a05..16e001a 100644
  15. --- a/src/pch.c
  16. +++ b/src/pch.c
  17. @@ -2459,9 +2459,6 @@ do_ed_script (char const *inname, char const *outname,
  18. *outname_needs_removal = true;
  19. copy_file (inname, outname, 0, exclusive, instat.st_mode, true);
  20. }
  21. - sprintf (buf, "%s %s%s", editor_program,
  22. - verbosity == VERBOSE ? "" : "- ",
  23. - outname);
  24. fflush (stdout);
  25. pid = fork();
  26. @@ -2470,7 +2467,8 @@ do_ed_script (char const *inname, char const *outname,
  27. else if (pid == 0)
  28. {
  29. dup2 (tmpfd, 0);
  30. - execl ("/bin/sh", "sh", "-c", buf, (char *) 0);
  31. + assert (outname[0] != '!' && outname[0] != '-');
  32. + execlp (editor_program, editor_program, "-", outname, (char *) NULL);
  33. _exit (2);
  34. }
  35. else
  36. --
  37. cgit v1.2.1