summaryrefslogtreecommitdiff
path: root/uhttpd-file.c
diff options
context:
space:
mode:
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-07-23 13:15:22 +0000
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-07-23 13:15:22 +0000
commiteca18b19053fcd4350039ffa46c24c335f4142c4 (patch)
tree589d72aa19a47e95ae624ee66b73dc6d5f57c79c /uhttpd-file.c
parent6577672859580b0ffbe62de5d328ac046d9137e6 (diff)
downloaduhttpd-eca18b19053fcd4350039ffa46c24c335f4142c4.tar.gz
[package] uhttpd:
- fix a compile warning - support custom index file names - support custom error pages (or cgi handler) - add option to disable directory listings - add REDIRECT_STATUS for CGI requests, fixes php-cgi git-svn-id: svn://svn.openwrt.org/openwrt/trunk/package/uhttpd/src@22366 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'uhttpd-file.c')
-rw-r--r--uhttpd-file.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/uhttpd-file.c b/uhttpd-file.c
index 81f66a3..850a141 100644
--- a/uhttpd-file.c
+++ b/uhttpd-file.c
@@ -29,7 +29,7 @@
static const char * uh_file_mime_lookup(const char *path)
{
struct mimetype *m = &uh_mime_types[0];
- char *e;
+ const char *e;
while( m->extn )
{
@@ -275,7 +275,9 @@ static void uh_file_dirlist(struct client *cl, struct http_request *req, struct
strncat(filename, files[i]->d_name,
sizeof(filename) - strlen(files[i]->d_name));
- if( !stat(filename, &s) && (s.st_mode & S_IFDIR) )
+ if( !stat(filename, &s) &&
+ (s.st_mode & S_IFDIR) && (s.st_mode & S_IXOTH)
+ )
uh_http_sendf(cl, req,
"<li><strong><a href='%s%s'>%s</a>/</strong><br />"
"<small>modified: %s<br />directory - %.02f kbyte"
@@ -293,7 +295,9 @@ static void uh_file_dirlist(struct client *cl, struct http_request *req, struct
strncat(filename, files[i]->d_name,
sizeof(filename) - strlen(files[i]->d_name));
- if( !stat(filename, &s) && !(s.st_mode & S_IFDIR) )
+ if( !stat(filename, &s) &&
+ !(s.st_mode & S_IFDIR) && (s.st_mode & S_IROTH)
+ )
uh_http_sendf(cl, req,
"<li><strong><a href='%s%s'>%s</a></strong><br />"
"<small>modified: %s<br />%s - %.02f kbyte<br />"
@@ -369,7 +373,7 @@ void uh_file_request(struct client *cl, struct http_request *req, struct path_in
}
/* directory */
- else if( pi->stat.st_mode & S_IFDIR )
+ else if( (pi->stat.st_mode & S_IFDIR) && !cl->server->conf->no_dirlists )
{
/* write status */
uh_file_response_200(cl, req, NULL);