Welcome! Log In Create A New Profile

Advanced

[nginx] svn commit: r4559 - in trunk/src: http os/unix os/win32

Anonymous User
March 27, 2012 12:44PM
Author: mdounin
Date: 2012-03-27 16:42:34 +0000 (Tue, 27 Mar 2012)
New Revision: 4559
URL: http://trac.nginx.org/nginx/changeset/4559/nginx

Log:
Fixed unconditional MAX_PATH usage (ticket #22).

POSIX doesn't require it to be defined, and Debian GNU/Hurd doesn't define
it. Note that if there is no MAX_PATH defined we have to use realpath()
with NULL argument and free() the result.


Modified:
trunk/src/http/ngx_http_variables.c
trunk/src/os/unix/ngx_files.h
trunk/src/os/win32/ngx_files.h

Modified: trunk/src/http/ngx_http_variables.c
===================================================================
--- trunk/src/http/ngx_http_variables.c 2012-03-27 16:37:43 UTC (rev 4558)
+++ trunk/src/http/ngx_http_variables.c 2012-03-27 16:42:34 UTC (rev 4559)
@@ -1273,10 +1273,13 @@
ngx_http_variable_realpath_root(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data)
{
+ u_char *real;
size_t len;
ngx_str_t path;
ngx_http_core_loc_conf_t *clcf;
- u_char real[NGX_MAX_PATH];
+#if (NGX_HAVE_MAX_PATH)
+ u_char buffer[NGX_MAX_PATH];
+#endif

clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);

@@ -1298,7 +1301,15 @@
}
}

- if (ngx_realpath(path.data, real) == NULL) {
+#if (NGX_HAVE_MAX_PATH)
+ real = buffer;
+#else
+ real = NULL;
+#endif
+
+ real = ngx_realpath(path.data, real);
+
+ if (real == NULL) {
ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
ngx_realpath_n " \"%s\" failed", path.data);
return NGX_ERROR;
@@ -1308,6 +1319,9 @@

v->data = ngx_pnalloc(r->pool, len);
if (v->data == NULL) {
+#if !(NGX_HAVE_MAX_PATH)
+ ngx_free(real);
+#endif
return NGX_ERROR;
}

@@ -1318,6 +1332,10 @@

ngx_memcpy(v->data, real, len);

+#if !(NGX_HAVE_MAX_PATH)
+ ngx_free(real);
+#endif
+
return NGX_OK;
}


Modified: trunk/src/os/unix/ngx_files.h
===================================================================
--- trunk/src/os/unix/ngx_files.h 2012-03-27 16:37:43 UTC (rev 4558)
+++ trunk/src/os/unix/ngx_files.h 2012-03-27 16:42:34 UTC (rev 4559)
@@ -200,14 +200,25 @@
#endif


-#define ngx_realpath(p, r) realpath((char *) p, (char *) r)
+#define ngx_realpath(p, r) (u_char *) realpath((char *) p, (char *) r)
#define ngx_realpath_n "realpath()"
#define ngx_getcwd(buf, size) (getcwd((char *) buf, size) != NULL)
#define ngx_getcwd_n "getcwd()"
#define ngx_path_separator(c) ((c) == '/')

+
+#if defined(PATH_MAX)
+
+#define NGX_HAVE_MAX_PATH 1
#define NGX_MAX_PATH PATH_MAX

+#else
+
+#define NGX_MAX_PATH 4096
+
+#endif
+
+
#define NGX_DIR_MASK_LEN 0



Modified: trunk/src/os/win32/ngx_files.h
===================================================================
--- trunk/src/os/win32/ngx_files.h 2012-03-27 16:37:43 UTC (rev 4558)
+++ trunk/src/os/win32/ngx_files.h 2012-03-27 16:42:34 UTC (rev 4559)
@@ -183,6 +183,7 @@
#define ngx_getcwd_n "GetCurrentDirectory()"
#define ngx_path_separator(c) ((c) == '/' || (c) == '\\')

+#define NGX_HAVE_MAX_PATH 1
#define NGX_MAX_PATH MAX_PATH

#define NGX_DIR_MASK (u_char *) "/*"

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] svn commit: r4559 - in trunk/src: http os/unix os/win32

Anonymous User 1294 March 27, 2012 12:44PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 188
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready