]> git.kaiwu.me - nginx.git/commitdiff
use ngx_dir_access() to enable search bits for directory
authorIgor Sysoev <igor@sysoev.ru>
Mon, 29 Jan 2007 12:25:44 +0000 (12:25 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 29 Jan 2007 12:25:44 +0000 (12:25 +0000)
src/http/modules/ngx_http_dav_module.c
src/os/unix/ngx_files.h
src/os/win32/ngx_files.h

index 5a2f0cacb8d394f907ba7b4013e39d73a22edc6b..f46cfe15dab7bc4dc5fbdcc31153a467e5a183c1 100644 (file)
@@ -252,7 +252,9 @@ ngx_http_dav_handler(ngx_http_request_t *r)
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                        "http mkcol path: \"%s\"", path.data);
 
-        if (ngx_create_dir(path.data, dlcf->access) != NGX_FILE_ERROR) {
+        if (ngx_create_dir(path.data, ngx_dir_access(dlcf->access))
+            != NGX_FILE_ERROR)
+        {
             if (ngx_http_dav_location(r, path.data) != NGX_OK) {
                 return NGX_HTTP_INTERNAL_SERVER_ERROR;
             }
@@ -351,7 +353,7 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
 
 #if !(NGX_WIN32)
 
-    if (ngx_change_file_access(temp->data, dlcf->access & ~0111)
+    if (ngx_change_file_access(temp->data, dlcf->access)
         == NGX_FILE_ERROR)
     {
         err = ngx_errno;
@@ -393,7 +395,7 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
     if (err == NGX_ENOENT) {
 
         if (dlcf->create_full_put_path) {
-            err = ngx_create_full_path(path.data, dlcf->access);
+            err = ngx_create_full_path(path.data, ngx_dir_access(dlcf->access));
 
             if (err == 0) {
                 if (ngx_rename_file(temp->data, path.data) != NGX_FILE_ERROR) {
@@ -539,7 +541,7 @@ ngx_http_dav_access(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 
     value = cf->args->elts;
 
-    lcf->access = 0700;
+    lcf->access = 0600;
 
     for (i = 1; i < cf->args->nelts; i++) {
 
@@ -562,16 +564,16 @@ ngx_http_dav_access(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
         }
 
         if (ngx_strcmp(p, "rw") == 0) {
-            right = 7;
+            right = 6;
 
         } else if (ngx_strcmp(p, "r") == 0) {
-            right = 5;
+            right = 4;
 
         } else {
             goto invalid;
         }
 
-        lcf->access += right << shift;
+        lcf->access |= right << shift;
     }
 
     return NGX_CONF_OK;
index d4ad8a46797ec548c5be7a614ee991ff2ef6d418..aa7311d722ffd802f5bdbf7e85b3d47bcd8190d4 100644 (file)
@@ -122,6 +122,9 @@ ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
 #define ngx_delete_dir_n         "rmdir()"
 
 
+#define ngx_dir_access(a)        (a | (a & 0444) >> 2)
+
+
 #define ngx_de_name(dir)         ((u_char *) (dir)->de->d_name)
 #if (NGX_FREEBSD)
 #define ngx_de_namelen(dir)      (dir)->de->d_namlen
index 96e0c8d448d73cabffe5928e289c2feeb1b8bef1..adcaab3d4a2078e1e1a5cd8455436acaeb6ba639 100644 (file)
@@ -150,6 +150,9 @@ ngx_int_t ngx_read_dir(ngx_dir_t *dir);
 #define ngx_delete_dir_n            "RemoveDirectory()"
 
 
+#define ngx_dir_access(a)           (a)
+
+
 #define ngx_de_name(dir)            ((u_char *) (dir)->finddata.cFileName)
 #define ngx_de_namelen(dir)         ngx_strlen((dir)->finddata.cFileName)