Ticket #9: ng-autoindex-namelen-fixed.patch
| File ng-autoindex-namelen-fixed.patch, 3.8 KB (added by , 12 years ago) |
|---|
-
ngx_http_autoindex_module.c
old new 40 40 ngx_flag_t enable; 41 41 ngx_flag_t localtime; 42 42 ngx_flag_t exact_size; 43 ngx_uint_t max_name_len; 43 44 } ngx_http_autoindex_loc_conf_t; 44 45 45 46 46 47 #define NGX_HTTP_AUTOINDEX_PREALLOCATE 50 47 48 48 #define NGX_HTTP_AUTOINDEX_NAME_LEN 5049 50 49 51 50 static int ngx_libc_cdecl ngx_http_autoindex_cmp_entries(const void *one, 52 51 const void *two); … … 81 80 offsetof(ngx_http_autoindex_loc_conf_t, exact_size), 82 81 NULL }, 83 82 83 { ngx_string("autoindex_max_name_len"), 84 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, 85 ngx_conf_set_size_slot, 86 NGX_HTTP_LOC_CONF_OFFSET, 87 offsetof(ngx_http_autoindex_loc_conf_t, max_name_len), 88 NULL }, 89 84 90 ngx_null_command 85 91 }; 86 92 … … 380 386 + sizeof("\">") - 1 381 387 + entry[i].name.len - entry[i].utf_len 382 388 + entry[i].escape_html 383 + NGX_HTTP_AUTOINDEX_NAME_LEN+ sizeof(">") - 2389 + alcf->max_name_len + sizeof(">") - 2 384 390 + sizeof("</a>") - 1 385 391 + sizeof(" 28-Sep-1970 12:00 ") - 1 386 392 + 20 /* the file size */ … … 442 448 len = entry[i].utf_len; 443 449 444 450 if (entry[i].name.len != len) { 445 if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) {446 char_len = NGX_HTTP_AUTOINDEX_NAME_LEN- 3 + 1;451 if (len > alcf->max_name_len) { 452 char_len = alcf->max_name_len - 3 + 1; 447 453 448 454 } else { 449 char_len = NGX_HTTP_AUTOINDEX_NAME_LEN+ 1;455 char_len = alcf->max_name_len + 1; 450 456 } 451 457 452 458 last = b->last; … … 462 468 463 469 } else { 464 470 if (entry[i].escape_html) { 465 if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) {466 char_len = NGX_HTTP_AUTOINDEX_NAME_LEN- 3;471 if (len > alcf->max_name_len) { 472 char_len = alcf->max_name_len - 3; 467 473 468 474 } else { 469 475 char_len = len; … … 475 481 476 482 } else { 477 483 b->last = ngx_cpystrn(b->last, entry[i].name.data, 478 NGX_HTTP_AUTOINDEX_NAME_LEN+ 1);484 alcf->max_name_len + 1); 479 485 last = b->last - 3; 480 486 } 481 487 } 482 488 483 if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) {489 if (len > alcf->max_name_len) { 484 490 b->last = ngx_cpymem(last, "..></a>", sizeof("..></a>") - 1); 485 491 486 492 } else { 487 if (entry[i].dir && NGX_HTTP_AUTOINDEX_NAME_LEN- len > 0) {493 if (entry[i].dir && alcf->max_name_len - len > 0) { 488 494 *b->last++ = '/'; 489 495 len++; 490 496 } 491 497 492 498 b->last = ngx_cpymem(b->last, "</a>", sizeof("</a>") - 1); 493 499 494 if ( NGX_HTTP_AUTOINDEX_NAME_LEN- len > 0) {495 ngx_memset(b->last, ' ', NGX_HTTP_AUTOINDEX_NAME_LEN- len);496 b->last += NGX_HTTP_AUTOINDEX_NAME_LEN- len;500 if (alcf->max_name_len - len > 0) { 501 ngx_memset(b->last, ' ', alcf->max_name_len - len); 502 b->last += alcf->max_name_len - len; 497 503 } 498 504 } 499 505 … … 667 673 conf->enable = NGX_CONF_UNSET; 668 674 conf->localtime = NGX_CONF_UNSET; 669 675 conf->exact_size = NGX_CONF_UNSET; 676 conf->max_name_len = NGX_CONF_UNSET_UINT; 670 677 671 678 return conf; 672 679 } … … 681 688 ngx_conf_merge_value(conf->enable, prev->enable, 0); 682 689 ngx_conf_merge_value(conf->localtime, prev->localtime, 0); 683 690 ngx_conf_merge_value(conf->exact_size, prev->exact_size, 1); 691 ngx_conf_merge_uint_value(conf->max_name_len, prev->max_name_len, 50); 684 692 685 693 return NGX_CONF_OK; 686 694 }
