<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/core/ngx_open_file_cache.c, branch release-1.28.3</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Fixed logging in close error handling.</title>
<updated>2016-03-30T23:33:50+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2016-03-30T23:33:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=2e25f340b8848561a00993f88bdf1723b77fbabe'/>
<id>2e25f340b8848561a00993f88bdf1723b77fbabe</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed typo in the error message.</title>
<updated>2015-08-11T07:28:00+00:00</updated>
<author>
<name>Andrei Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2015-08-11T07:28:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=9500e19919b5410b8bc17dbd3d705eef8cf5b1d8'/>
<id>9500e19919b5410b8bc17dbd3d705eef8cf5b1d8</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: removed recursive call of ngx_file_o_path_info().</title>
<updated>2013-09-02T16:06:03+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-09-02T16:06:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=42910391cd9380ea0632d75f745f0332f9350c5d'/>
<id>42910391cd9380ea0632d75f745f0332f9350c5d</id>
<content type='text'>
It is surplus.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is surplus.
</pre>
</div>
</content>
</entry>
<entry>
<title>Disable symlinks: use O_PATH to open path components.</title>
<updated>2013-09-02T04:07:59+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2013-09-02T04:07:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7b373841407b198759276242ab2dc4e5f78adb21'/>
<id>7b373841407b198759276242ab2dc4e5f78adb21</id>
<content type='text'>
It was introduced in Linux 2.6.39, glibc 2.14 and allows to obtain
file descriptors without actually opening files.  Thus made it possible
to traverse path with openat() syscalls without the need to have read
permissions for path components.  It is effectively emulates O_SEARCH
which is missing on Linux.

O_PATH is used in combination with O_RDONLY.  The last one is ignored
if O_PATH is used, but it allows nginx to not fail when it was built on
modern system (i.e. glibc 2.14+) and run with a kernel older than 2.6.39.
Then O_PATH is unknown to the kernel and ignored, while O_RDONLY is used.

Sadly, fstat() is not working with O_PATH descriptors till Linux 3.6.
As a workaround we fallback to fstatat() with the AT_EMPTY_PATH flag
that was introduced at the same time as O_PATH.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It was introduced in Linux 2.6.39, glibc 2.14 and allows to obtain
file descriptors without actually opening files.  Thus made it possible
to traverse path with openat() syscalls without the need to have read
permissions for path components.  It is effectively emulates O_SEARCH
which is missing on Linux.

O_PATH is used in combination with O_RDONLY.  The last one is ignored
if O_PATH is used, but it allows nginx to not fail when it was built on
modern system (i.e. glibc 2.14+) and run with a kernel older than 2.6.39.
Then O_PATH is unknown to the kernel and ignored, while O_RDONLY is used.

Sadly, fstat() is not working with O_PATH descriptors till Linux 3.6.
As a workaround we fallback to fstatat() with the AT_EMPTY_PATH flag
that was introduced at the same time as O_PATH.
</pre>
</div>
</content>
</entry>
<entry>
<title>Format specifier fixes in error logging.</title>
<updated>2013-08-20T16:47:16+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2013-08-20T16:47:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=e09741ba06fd4870d90be6df7c59cd4e6da8a8b0'/>
<id>e09741ba06fd4870d90be6df7c59cd4e6da8a8b0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix of rbtree lookup on hash collisions.</title>
<updated>2012-02-27T22:15:39+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2012-02-27T22:15:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=7ca6c1ff782afbb83b9f17d6552566c823247e29'/>
<id>7ca6c1ff782afbb83b9f17d6552566c823247e29</id>
<content type='text'>
Previous code incorrectly assumed that nodes with identical keys are linked
together.  This might not be true after tree rebalance.

Patch by Lanshun Zhou.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previous code incorrectly assumed that nodes with identical keys are linked
together.  This might not be true after tree rebalance.

Patch by Lanshun Zhou.
</pre>
</div>
</content>
</entry>
<entry>
<title>Disable symlinks: added the "from" parameter support to the open file cache.</title>
<updated>2012-02-27T16:46:57+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2012-02-27T16:46:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=346791187f358f852c2434f29a86754e7ab10f5b'/>
<id>346791187f358f852c2434f29a86754e7ab10f5b</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: use O_SEARCH|O_DIRECTORY to open path components.</title>
<updated>2012-02-21T15:10:13+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2012-02-21T15:10:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=86c5513ecb34ab90027935c329e74b41fdc3a49e'/>
<id>86c5513ecb34ab90027935c329e74b41fdc3a49e</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: don't allow creating or truncating a file via a symlink in</title>
<updated>2012-02-21T15:04:41+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2012-02-21T15:04:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=15b3173c5e5108287f5d74126f29854b14c1db94'/>
<id>15b3173c5e5108287f5d74126f29854b14c1db94</id>
<content type='text'>
the last path component if "if_not_owner" parameter is used.

To prevent race condition we have to open a file before checking its owner and
there's no way to change access flags for already opened file descriptor, so
we disable symlinks for the last path component at all if flags allow creating
or truncating the file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the last path component if "if_not_owner" parameter is used.

To prevent race condition we have to open a file before checking its owner and
there's no way to change access flags for already opened file descriptor, so
we disable symlinks for the last path component at all if flags allow creating
or truncating the file.
</pre>
</div>
</content>
</entry>
<entry>
<title>Disable symlinks: cleanups once again.</title>
<updated>2012-02-21T15:01:25+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2012-02-21T15:01:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=8c27e6429aa634091ad07e02bfee91084497549f'/>
<id>8c27e6429aa634091ad07e02bfee91084497549f</id>
<content type='text'>
In collaboration with Ruslan Ermilov.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In collaboration with Ruslan Ermilov.
</pre>
</div>
</content>
</entry>
</feed>
