<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unit.git/auto, branch 1.14.0</title>
<subtitle>Universal Web Application Server</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/'/>
<entry>
<title>Go: changing import name for "unit.nginx.org/go".</title>
<updated>2019-12-25T17:00:32+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2019-12-25T17:00:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=693a458b4ea87b7b387bd9d094de2b42be7ecdbd'/>
<id>693a458b4ea87b7b387bd9d094de2b42be7ecdbd</id>
<content type='text'>
This patch includes packaging changes - update unit-go installation
directory.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch includes packaging changes - update unit-go installation
directory.
</pre>
</div>
</content>
</entry>
<entry>
<title>Router: introducing routing on client address.</title>
<updated>2019-12-24T13:58:10+00:00</updated>
<author>
<name>Axel Duch</name>
<email>axel.duch@nginx.com</email>
</author>
<published>2019-12-24T13:58:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=8677bf8d41e002310971fddbc5e45c64034afc2f'/>
<id>8677bf8d41e002310971fddbc5e45c64034afc2f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Go: moving source files to the root of the project.</title>
<updated>2019-12-24T14:59:52+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2019-12-24T14:59:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=f5a2984acf9a562b6b1eb45a21d9af2be2415659'/>
<id>f5a2984acf9a562b6b1eb45a21d9af2be2415659</id>
<content type='text'>
This patch includes packaging changes related to files move.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch includes packaging changes related to files move.
</pre>
</div>
</content>
</entry>
<entry>
<title>Go: installing go module for tests into build directory.</title>
<updated>2019-12-24T14:59:48+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2019-12-24T14:59:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=a427ecd4c547958079cce2dae13060b2d60aa4d4'/>
<id>a427ecd4c547958079cce2dae13060b2d60aa4d4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Go: linking against libunit.</title>
<updated>2019-12-24T14:59:37+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2019-12-24T14:59:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=823f658c771af8b6ff07a3581a2c63efc6a15ad2'/>
<id>823f658c771af8b6ff07a3581a2c63efc6a15ad2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Java: fixing racing condition in external JAR download.</title>
<updated>2019-12-09T15:17:16+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2019-12-09T15:17:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=55a368e5058451b99600b983f6cb98402fcd57cc'/>
<id>55a368e5058451b99600b983f6cb98402fcd57cc</id>
<content type='text'>
Temporary file name with configure process PID used to download
JAR from external repository.  Then file renamed using command 'mv'.

The issue reproduced in clean environment when 2 or more concurrent builds
started.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Temporary file name with configure process PID used to download
JAR from external repository.  Then file renamed using command 'mv'.

The issue reproduced in clean environment when 2 or more concurrent builds
started.
</pre>
</div>
</content>
</entry>
<entry>
<title>Isolation: allowed the use of credentials with unpriv userns.</title>
<updated>2019-12-06T16:52:50+00:00</updated>
<author>
<name>Tiago Natel</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2019-12-06T16:52:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=411daeaa532c47328ab901a7ba9ea5dcd876be06'/>
<id>411daeaa532c47328ab901a7ba9ea5dcd876be06</id>
<content type='text'>
The setuid/setgid syscalls requires root capabilities but if the kernel
supports unprivileged user namespace then the child process has the full
set of capabilities in the new namespace, then we can allow setting "user"
and "group" in such cases (this is a common security use case).

Tests were added to ensure user gets meaningful error messages for
uid/gid mapping misconfigurations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The setuid/setgid syscalls requires root capabilities but if the kernel
supports unprivileged user namespace then the child process has the full
set of capabilities in the new namespace, then we can allow setting "user"
and "group" in such cases (this is a common security use case).

Tests were added to ensure user gets meaningful error messages for
uid/gid mapping misconfigurations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Moved credential-related code to nxt_credential.c.</title>
<updated>2019-12-06T13:28:05+00:00</updated>
<author>
<name>Tiago Natel</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2019-12-06T13:28:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=ed2492a66afdf578d1e4f99dc098ab685607b3ba'/>
<id>ed2492a66afdf578d1e4f99dc098ab685607b3ba</id>
<content type='text'>
This is required to avoid include cycles, as some nxt_clone_* functions
depend on the credential structures, but nxt_process depends on clone
structures.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is required to avoid include cycles, as some nxt_clone_* functions
depend on the credential structures, but nxt_process depends on clone
structures.
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed the group listing to run unprivileged when possible.</title>
<updated>2019-11-26T16:15:23+00:00</updated>
<author>
<name>Tiago Natel</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2019-11-26T16:15:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=2f23923e44d4528a547d2a29212ac93c3f0e25de'/>
<id>2f23923e44d4528a547d2a29212ac93c3f0e25de</id>
<content type='text'>
Now the nxt_user_groups_get() function uses getgrouplist(3) when available
(except MacOS, see below).  For some platforms, getgrouplist() supports
a method of probing how much groups the user has but the behavior is not
consistent.  The method used here consists of optimistically trying to get up
to min(256, NGROUPS_MAX) groups; only if ngroups returned exceeds the original
value, we do a second call.  This method can block main's process if LDAP/NDIS+
is in use.

MacOS has getgrouplist(3) but it's buggy.  It doesn't update ngroups if the
value passed is smaller than the number of groups the user has.  Some
projects (like Go stdlib) call getgrouplist() in a loop, increasing ngroups
until it exceeds the number of groups user belongs to or fail when a limit
is reached.  For performance reasons, this is to be avoided and MacOS is
handled in the fallback implementation.

The fallback implementation is the old Unit approach.  It saves main's
user groups (getgroups(2)) and then calls initgroups(3) to load application's
groups in main, then does a second getgroups(2) to store the gids and restore
main's groups in the end.  Because of initgroups(3)' call to setgroups(2),
this method requires root capabilities.  In the case of OSX, which has
small NGROUPS_MAX by default (16), it's not possible to restore main's groups
if it's large; if so, this method fallbacks again: user_cred gids aren't
stored, and the worker process calls initgroups() itself and may block for
some time if LDAP/NDIS+ is in use.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now the nxt_user_groups_get() function uses getgrouplist(3) when available
(except MacOS, see below).  For some platforms, getgrouplist() supports
a method of probing how much groups the user has but the behavior is not
consistent.  The method used here consists of optimistically trying to get up
to min(256, NGROUPS_MAX) groups; only if ngroups returned exceeds the original
value, we do a second call.  This method can block main's process if LDAP/NDIS+
is in use.

MacOS has getgrouplist(3) but it's buggy.  It doesn't update ngroups if the
value passed is smaller than the number of groups the user has.  Some
projects (like Go stdlib) call getgrouplist() in a loop, increasing ngroups
until it exceeds the number of groups user belongs to or fail when a limit
is reached.  For performance reasons, this is to be avoided and MacOS is
handled in the fallback implementation.

The fallback implementation is the old Unit approach.  It saves main's
user groups (getgroups(2)) and then calls initgroups(3) to load application's
groups in main, then does a second getgroups(2) to store the gids and restore
main's groups in the end.  Because of initgroups(3)' call to setgroups(2),
this method requires root capabilities.  In the case of OSX, which has
small NGROUPS_MAX by default (16), it's not possible to restore main's groups
if it's large; if so, this method fallbacks again: user_cred gids aren't
stored, and the worker process calls initgroups() itself and may block for
some time if LDAP/NDIS+ is in use.
</pre>
</div>
</content>
</entry>
<entry>
<title>Configure: fixed posix_spawn() detection with glic 2.30.</title>
<updated>2019-11-22T11:06:02+00:00</updated>
<author>
<name>Sergey Kandaurov</name>
<email>pluknet@nginx.com</email>
</author>
<published>2019-11-22T11:06:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=94a9162baa82809ec58a3d06ca3489c7e7fed6ed'/>
<id>94a9162baa82809ec58a3d06ca3489c7e7fed6ed</id>
<content type='text'>
In particular, it was previously broken on Ubuntu 19.10 and Fedora 31.
See for details: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2ab5741
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In particular, it was previously broken on Ubuntu 19.10 and Fedora 31.
See for details: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2ab5741
</pre>
</div>
</content>
</entry>
</feed>
