]> granicus.if.org Git - python/commitdiff
SF patch 508730 CGIHTTPServer execfile should save cwd
authorTim Peters <tim.peters@gmail.com>
Sat, 20 Mar 2004 21:51:12 +0000 (21:51 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 20 Mar 2004 21:51:12 +0000 (21:51 +0000)
UNTESTED!!!

This simple two-line patch has been sitting on SF for more than 2 years.
I'm guessing it's because nobody knows how to test it -- I sure don't.
It doesn't look like you can get to this part of the code on Unixish
or Windows systems, so the "how to test it?" puzzle has more than one
part.  OTOH, if this is dead code, it doesn't matter either if I just
broke it <wink>.

Lib/CGIHTTPServer.py

index 52e04e9902c416333d89ead4912d0eb3a9744aa5..9e118b2407768c82b26a2a411fc9b78f8f5e89a4 100644 (file)
@@ -120,7 +120,7 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
             self.send_error(404, "No such CGI script (%r)" % scriptname)
             return
         if not os.path.isfile(scriptfile):
-            self.send_error(403, "CGI script is not a plain file (%r)" % 
+            self.send_error(403, "CGI script is not a plain file (%r)" %
                             scriptname)
             return
         ispy = self.is_python(scriptname)
@@ -273,6 +273,7 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
             save_stdout = sys.stdout
             save_stderr = sys.stderr
             try:
+                save_cwd = os.getcwd()
                 try:
                     sys.argv = [scriptfile]
                     if '=' not in decoded_query:
@@ -285,6 +286,7 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
                     sys.stdin = save_stdin
                     sys.stdout = save_stdout
                     sys.stderr = save_stderr
+                    os.chdir(save_cwd)
             except SystemExit, sts:
                 self.log_error("CGI script exit status %s", str(sts))
             else: