summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-02-13 22:21:52 +0200
committerSergey Poznyakoff <gray@gnu.org>2018-02-13 22:21:52 +0200
commite8d8cbf292c9fbc041c346859916db9e7367d4bb (patch)
tree86ba3a1495f3105cccbaaaff1b68fe2ab924d692
parenta60c099c902411f27e93d7aac2323b99696d1a92 (diff)
downloadfileserv-e8d8cbf292c9fbc041c346859916db9e7367d4bb.tar.gz
fileserv-e8d8cbf292c9fbc041c346859916db9e7367d4bb.tar.bz2
Bugfixes
-rw-r--r--src/dirconfig.c2
-rw-r--r--src/fileserv.c14
2 files changed, 12 insertions, 4 deletions
diff --git a/src/dirconfig.c b/src/dirconfig.c
index 6cf0a37..d40475d 100644
--- a/src/dirconfig.c
+++ b/src/dirconfig.c
@@ -311,3 +311,3 @@ filename_is_valid(char const *name)
}
- return state != s_err;
+ return state == s_end;
}
diff --git a/src/fileserv.c b/src/fileserv.c
index 8f18b92..a7e0bc2 100644
--- a/src/fileserv.c
+++ b/src/fileserv.c
@@ -370,3 +370,3 @@ make_location(char const *proto, char const *host, char const *url)
len++;
- buf = malloc(len);
+ buf = malloc(len + 1);
if (buf) {
@@ -401,2 +401,9 @@ get_sort_ord(struct MHD_Connection *conn)
+static char const *
+basename(char const *s)
+{
+ char *p = strrchr(s, '/');
+ return p ? p + 1 : s;
+}
+
int
@@ -418,3 +425,4 @@ get_file_resp(struct MHD_Connection *conn, char const *url, FILE_RESP *resp)
return MHD_HTTP_NOT_FOUND;
- resp->file_name = catfile_n(map->dir, map->dir_len, url + map->uri_len);
+ resp->file_name = catfile_n(map->dir, map->dir_len,
+ url + map->uri_len);
if (lstat(resp->file_name, &resp->st))
@@ -424,3 +432,3 @@ get_file_resp(struct MHD_Connection *conn, char const *url, FILE_RESP *resp)
- if (filename_is_hidden(resp->file_name, resp->conf))
+ if (filename_is_hidden(basename(resp->file_name), resp->conf))
return MHD_HTTP_NOT_FOUND;

Return to:

Send suggestions and report system problems to the System administrator.