nginx-0.1.38 :: mod_autoindex errors

Igor Sysoev is at rambler-co.ru
Sun Jul 10 21:43:26 MSD 2005


On Sun, 10 Jul 2005, Alexey Beschiokov wrote:

> Игорь, после перехода с 36 на 38 как странно стал работать auntoindex с
> файлами/папками с русскими названиями - такое впечатление что строка
> иногда не терминируется и в конце выводицца какойто мусор.

Прилагаемый патч должен помочь.


Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/modules/ngx_http_autoindex_module.c	Fri Jun 24 17:03:43 2005
+++ src/http/modules/ngx_http_autoindex_module.c	Sun Jul 10 21:41:27 2005
@@ -315,16 +315,16 @@
 
         entry->name.len = len;        
 
-        entry->escape = 2 * ngx_escape_uri(NULL, ngx_de_name(&dir), len,
-                                           NGX_ESCAPE_HTML);
-
-        entry->name.data = ngx_palloc(pool, len + entry->escape + 1);
+        entry->name.data = ngx_palloc(pool, len + 1);
         if (entry->name.data == NULL) {
             return ngx_http_autoindex_error(r, &dir, dname.data);
         }
 
         ngx_cpystrn(entry->name.data, ngx_de_name(&dir), len + 1);
 
+        entry->escape = 2 * ngx_escape_uri(NULL, ngx_de_name(&dir), len,
+                                           NGX_ESCAPE_HTML);
+
         if (r->utf8) {
             entry->utf_len = ngx_utf_length(&entry->name);
         } else {
@@ -353,14 +353,14 @@
     entry = entries.elts;
     for (i = 0; i < entries.nelts; i++) {
         len += sizeof("<a href=\"") - 1
-            + 1                                          /* 1 is for "/" */
             + entry[i].name.len + entry[i].escape
+            + 1                                          /* 1 is for "/" */
             + sizeof("\">") - 1
             + entry[i].name.len - entry[i].utf_len
             + NGX_HTTP_AUTOINDEX_NAME_LEN + sizeof("&gt;") - 2
             + sizeof("</a>") - 1
             + sizeof(" 28-Sep-1970 12:00 ") - 1
-            + 20
+            + 20                                         /* the file size */
             + 2;
     }
 
@@ -407,7 +407,7 @@
 
         len = entry[i].utf_len;
 
-        if (len) {
+        if (entry[i].name.len - len) {
             if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) {
                 copy = NGX_HTTP_AUTOINDEX_NAME_LEN - 3 + 1;
 


More information about the nginx-ru mailing list