Mercurial > hg > nginx-vendor-current
comparison src/os/unix/ngx_freebsd_rfork_thread.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 |
---|---|
9 #include <ngx_core.h> | 9 #include <ngx_core.h> |
10 | 10 |
11 /* | 11 /* |
12 * The threads implementation uses the rfork(RFPROC|RFTHREAD|RFMEM) syscall | 12 * The threads implementation uses the rfork(RFPROC|RFTHREAD|RFMEM) syscall |
13 * to create threads. All threads use the stacks of the same size mmap()ed | 13 * to create threads. All threads use the stacks of the same size mmap()ed |
14 * below the main stack. Thus the current thread id is determinated via | 14 * below the main stack. Thus the current thread id is determined via |
15 * the stack pointer value. | 15 * the stack pointer value. |
16 * | 16 * |
17 * The mutex implementation uses the ngx_atomic_cmp_set() operation | 17 * The mutex implementation uses the ngx_atomic_cmp_set() operation |
18 * to acquire a mutex and the SysV semaphore to wait on a mutex and to wake up | 18 * to acquire a mutex and the SysV semaphore to wait on a mutex and to wake up |
19 * the waiting threads. The light mutex does not use semaphore, so after | 19 * the waiting threads. The light mutex does not use semaphore, so after |
20 * spinning in the lock the thread calls sched_yield(). However the light | 20 * spinning in the lock the thread calls sched_yield(). However the light |
21 * mutecies are intended to be used with the "trylock" operation only. | 21 * mutexes are intended to be used with the "trylock" operation only. |
22 * The SysV semop() is a cheap syscall, particularly if it has little sembuf's | 22 * The SysV semop() is a cheap syscall, particularly if it has little sembuf's |
23 * and does not use SEM_UNDO. | 23 * and does not use SEM_UNDO. |
24 * | 24 * |
25 * The condition variable implementation uses the signal #64. | 25 * The condition variable implementation uses the signal #64. |
26 * The signal handler is SIG_IGN so the kill() is a cheap syscall. | 26 * The signal handler is SIG_IGN so the kill() is a cheap syscall. |