<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git, branch release-1.1.15</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>nginx-1.1.15-RELEASE</title>
<updated>2012-02-15T13:26:06+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-15T13:26:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=3cf5ad94e988a83311ddeaea1a9239394eb7b878'/>
<id>3cf5ad94e988a83311ddeaea1a9239394eb7b878</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Disable symlinks: fixed edge cases of path handling.</title>
<updated>2012-02-15T12:18:55+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-15T12:18:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=32b000bad7df8f0303d74a5c02fbd62e9241d17b'/>
<id>32b000bad7df8f0303d74a5c02fbd62e9241d17b</id>
<content type='text'>
This includes non-absolute pathnames, multiple slashes and trailing
slashes.  In collaboration with Valentin Bartenev.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This includes non-absolute pathnames, multiple slashes and trailing
slashes.  In collaboration with Valentin Bartenev.
</pre>
</div>
</content>
</entry>
<entry>
<title>Disable symlinks: cleanup error handling.</title>
<updated>2012-02-15T12:17:24+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-15T12:17:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=04015a48ca657ac7649401ca75a9414e1b733d63'/>
<id>04015a48ca657ac7649401ca75a9414e1b733d63</id>
<content type='text'>
Notably this fixes NGX_INVALID_FILE/NGX_FILE_ERROR mess, and adds
logging of close() errors.  In collaboration with Valentin Bartenev.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Notably this fixes NGX_INVALID_FILE/NGX_FILE_ERROR mess, and adds
logging of close() errors.  In collaboration with Valentin Bartenev.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support for disable_symlinks in various modules.</title>
<updated>2012-02-13T16:32:21+00:00</updated>
<author>
<name>Andrey Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2012-02-13T16:32:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=8ce8f6667f3f14c004148138c0aec3dff79c350b'/>
<id>8ce8f6667f3f14c004148138c0aec3dff79c350b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Added disable_symlinks directive.</title>
<updated>2012-02-13T16:29:04+00:00</updated>
<author>
<name>Andrey Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2012-02-13T16:29:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=bd1e719bf9c4bc58076e7b52e87be645c9b803f5'/>
<id>bd1e719bf9c4bc58076e7b52e87be645c9b803f5</id>
<content type='text'>
To completely disable symlinks (disable_symlinks on)
we use openat(O_NOFOLLOW) for each path component
to avoid races.

To allow symlinks with the same owner (disable_symlinks if_not_owner),
use openat() (followed by fstat()) and fstatat(AT_SYMLINK_NOFOLLOW),
and then compare uids between fstat() and fstatat().

As there is a race between openat() and fstatat() we don't
know if openat() in fact opened symlink or not.  Therefore,
we have to compare uids even if fstatat() reports the opened
component isn't a symlink (as we don't know whether it was
symlink during openat() or not).

Default value is off, i.e. symlinks are allowed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To completely disable symlinks (disable_symlinks on)
we use openat(O_NOFOLLOW) for each path component
to avoid races.

To allow symlinks with the same owner (disable_symlinks if_not_owner),
use openat() (followed by fstat()) and fstatat(AT_SYMLINK_NOFOLLOW),
and then compare uids between fstat() and fstatat().

As there is a race between openat() and fstatat() we don't
know if openat() in fact opened symlink or not.  Therefore,
we have to compare uids even if fstatat() reports the opened
component isn't a symlink (as we don't know whether it was
symlink during openat() or not).

Default value is off, i.e. symlinks are allowed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed ngx_open_and_stat_file() to use ngx_str_t.</title>
<updated>2012-02-13T16:16:45+00:00</updated>
<author>
<name>Andrey Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2012-02-13T16:16:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=32c8df44d5f53026d92ec24bcf4c864359395e55'/>
<id>32c8df44d5f53026d92ec24bcf4c864359395e55</id>
<content type='text'>
No functional changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
No functional changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added openat()/fstatat().</title>
<updated>2012-02-13T16:13:21+00:00</updated>
<author>
<name>Andrey Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2012-02-13T16:13:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=71205c3fbc530ec810e18b0cfb6f8db5bb8d1cd1'/>
<id>71205c3fbc530ec810e18b0cfb6f8db5bb8d1cd1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Time parsing cleanup.</title>
<updated>2012-02-13T15:41:11+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-13T15:41:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9f38b20db50a22b434d35c9bf3c5b08d5ddfbd8b'/>
<id>9f38b20db50a22b434d35c9bf3c5b08d5ddfbd8b</id>
<content type='text'>
Nuke NGX_PARSE_LARGE_TIME, it's not used since 0.6.30.  The only error
ngx_parse_time() can currently return is NGX_ERROR, check it explicitly
and make sure to cast it to appropriate type (either time_t or ngx_msec_t)
to avoid signedness warnings on platforms with unsigned time_t (notably QNX).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nuke NGX_PARSE_LARGE_TIME, it's not used since 0.6.30.  The only error
ngx_parse_time() can currently return is NGX_ERROR, check it explicitly
and make sure to cast it to appropriate type (either time_t or ngx_msec_t)
to avoid signedness warnings on platforms with unsigned time_t (notably QNX).
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed build with embedded perl and --with-openssl.</title>
<updated>2012-02-13T15:38:48+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-13T15:38:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=8cb7134f49bcdded469b3e72415b96794190257e'/>
<id>8cb7134f49bcdded469b3e72415b96794190257e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Core: protection from cycles with named locations and post_action.</title>
<updated>2012-02-13T15:35:48+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-13T15:35:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7dff998495d527041dbd7f48770dfc395ddabaee'/>
<id>7dff998495d527041dbd7f48770dfc395ddabaee</id>
<content type='text'>
Now redirects to named locations are counted against normal uri changes
limit, and post_action respects this limit as well.  As a result at least
the following (bad) configurations no longer trigger infinite cycles:

1. Post action which recursively triggers post action:

    location / {
        post_action /index.html;
    }

2. Post action pointing to nonexistent named location:

    location / {
        post_action @nonexistent;
    }

3. Recursive error page for 500 (Internal Server Error) pointing to
   a nonexistent named location:

    location / {
        recursive_error_pages on;
        error_page 500 @nonexistent;
        return 500;
    }
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now redirects to named locations are counted against normal uri changes
limit, and post_action respects this limit as well.  As a result at least
the following (bad) configurations no longer trigger infinite cycles:

1. Post action which recursively triggers post action:

    location / {
        post_action /index.html;
    }

2. Post action pointing to nonexistent named location:

    location / {
        post_action @nonexistent;
    }

3. Recursive error page for 500 (Internal Server Error) pointing to
   a nonexistent named location:

    location / {
        recursive_error_pages on;
        error_page 500 @nonexistent;
        return 500;
    }
</pre>
</div>
</content>
</entry>
</feed>
