sorry, it seems I didn't follow the usual path for submitting a patch,
so here I go again:

I stumbled upon a problem with the CGI-enabled httpd. It seems that
httpd can't handle a CGI call with an appended PATH_INFO, if the
latter ends with a slash. httpd takes this as a call for a directory
listing and throws 404.

For further details you may take a look here:
https://lists.zx2c4.com/pipermail/cgit/2023-March/004825.html

I've attached a patch, which works for me, although my understanding
of the httpd.c code is only superficial.

Patch was generated by
diff -u networking/httpd.c networking/httpd.c.new >httpd.patch
against the busybox-1.34.1 tarball

Thanks a lot to the busybox developers for their outstanding work.

best regards
Andreas

--- networking/httpd.c    2021-06-16 12:02:16.000000000 +0200
+++ networking/httpd.c.new    2023-03-07 19:05:22.447075000 +0100
@@ -2426,11 +2426,14 @@
     }
 #if ENABLE_FEATURE_HTTPD_CGI
     else if (urlp[-1] == '/') {
-        /* It's a dir URL and there is no index.html */
-        /* Is there cgi-bin/index.cgi? */
-        if (access("/cgi-bin/index.cgi"+1, X_OK) != 0)
-            send_headers_and_exit(HTTP_NOT_FOUND); /* no */
-        cgi_type = CGI_INDEX;
+        if (cgi_type == CGI_NONE) {
+            /* It's a dir URL and there is no index.html */
+            /* Is there cgi-bin/index.cgi? */
+            if (access("/cgi-bin/index.cgi"+1, X_OK) != 0) {
+                send_headers_and_exit(HTTP_NOT_FOUND); /* no */
+            }
+            cgi_type = CGI_INDEX;
+        }
     }
 #endif
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to