Mercurial > hg > nginx-vendor-current
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 } |