comparison src/http/modules/ngx_http_browser_module.c @ 670:ad45b044f1e5 NGINX_1_1_19

nginx 1.1.19 *) Security: specially crafted mp4 file might allow to overwrite memory locations in a worker process if the ngx_http_mp4_module was used, potentially resulting in arbitrary code execution (CVE-2012-2089). Thanks to Matthew Daley. *) Bugfix: nginx/Windows might be terminated abnormally. Thanks to Vincent Lee. *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as "backup". *) Bugfix: the "allow" and "deny" directives might be inherited incorrectly if they were used with IPv6 addresses. *) Bugfix: the "modern_browser" and "ancient_browser" directives might be inherited incorrectly. *) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC. *) Bugfix: in the ngx_http_mp4_module.
author Igor Sysoev <http://sysoev.ru>
date Thu, 12 Apr 2012 00:00:00 +0400
parents d0f7a625f27c
children
comparison
equal deleted inserted replaced
669:3f5d0be5ee74 670:ad45b044f1e5
456 * At the merge the skip field is used to store the browser slot, 456 * At the merge the skip field is used to store the browser slot,
457 * it will be used in sorting and then will overwritten 457 * it will be used in sorting and then will overwritten
458 * with a real skip value. The zero value means Opera. 458 * with a real skip value. The zero value means Opera.
459 */ 459 */
460 460
461 if (conf->modern_browsers == NULL) { 461 if (conf->modern_browsers == NULL && conf->modern_unlisted_browsers == 0) {
462 conf->modern_browsers = prev->modern_browsers; 462 conf->modern_browsers = prev->modern_browsers;
463 463 conf->modern_unlisted_browsers = prev->modern_unlisted_browsers;
464 } else { 464
465 } else if (conf->modern_browsers != NULL) {
465 browsers = conf->modern_browsers->elts; 466 browsers = conf->modern_browsers->elts;
466 467
467 for (i = 0; i < conf->modern_browsers->nelts; i++) { 468 for (i = 0; i < conf->modern_browsers->nelts; i++) {
468 if (browsers[i].skip == 0) { 469 if (browsers[i].skip == 0) {
469 goto found; 470 goto found;
499 (void) ngx_cpystrn(browsers[i].name, 500 (void) ngx_cpystrn(browsers[i].name,
500 ngx_http_modern_browser_masks[n].name, 12); 501 ngx_http_modern_browser_masks[n].name, 12);
501 } 502 }
502 } 503 }
503 504
504 if (conf->ancient_browsers == NULL) { 505 if (conf->ancient_browsers == NULL && conf->netscape4 == 0) {
505 conf->ancient_browsers = prev->ancient_browsers; 506 conf->ancient_browsers = prev->ancient_browsers;
507 conf->netscape4 = prev->netscape4;
506 } 508 }
507 509
508 if (conf->modern_browser_value == NULL) { 510 if (conf->modern_browser_value == NULL) {
509 conf->modern_browser_value = prev->modern_browser_value; 511 conf->modern_browser_value = prev->modern_browser_value;
510 } 512 }