summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRené Wagner <rwagner@rw-net.de>2020-11-05 14:42:45 +0100
committerDrew DeVault <sir@cmpwn.com>2020-11-08 10:59:35 -0500
commit02a386b56818333a160b876cc9049341bdcb45b4 (patch)
tree63ae1a12ff982e950596d6ac1a9b67b6231db91b /src
parentc145ac6a6562c154e2bf4ab4e73ada11f9aed3a6 (diff)
downloadgmnisrv-02a386b56818333a160b876cc9049341bdcb45b4.tar.gz
gmnisrv-02a386b56818333a160b876cc9049341bdcb45b4.tar.xz
gmnisrv-02a386b56818333a160b876cc9049341bdcb45b4.zip
check if file served as cgi is executable
if not, send a response 50 to the client fixes ~sircmpwn/gmni#47
Diffstat (limited to 'src')
-rw-r--r--src/serve.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/serve.c b/src/serve.c
index 459901e..8f5a39f 100644
--- a/src/serve.c
+++ b/src/serve.c
@@ -457,6 +457,12 @@ serve_request(struct gmnisrv_client *client)
assert(s != -1);
strcpy(real_path, temp_path);
} else if (S_ISREG(st.st_mode)) {
+ if (route->cgi && access(real_path, X_OK)) {
+ client_submit_response(client,
+ GEMINI_STATUS_PERMANENT_FAILURE, "Internal Server Error", NULL);
+ return;
+ }
+
break;
} else {
// Don't serve special files