mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-16 13:23:36 +00:00
libalias: Fix API bug on initialization
The kernel part of ipfw(8) does initialize LibAlias uncondistionally with an zeroized port range (allowed ports from 0 to 0). During restucturing of libalias, port ranges are used everytime and are therefor initialized with different values than zero. The secondary initialization from ipfw (and probably others) overrides the new default values and leave the instance in an unfunctional state. The obvious solution is to detect such reinitializations and use the new default value instead. MFC after: 3 days
This commit is contained in:
parent
24f398e7a1
commit
f284553444
|
@ -2048,9 +2048,15 @@ LibAliasSetAliasPortRange(struct libalias *la, u_short port_low,
|
|||
u_short port_high)
|
||||
{
|
||||
LIBALIAS_LOCK(la);
|
||||
la->aliasPortLower = port_low;
|
||||
/* Add 1 to the aliasPortLength as modulo has range of 1 to n-1 */
|
||||
la->aliasPortLength = port_high - port_low + 1;
|
||||
if (port_low) {
|
||||
la->aliasPortLower = port_low;
|
||||
/* Add 1 to the aliasPortLength as modulo has range of 1 to n-1 */
|
||||
la->aliasPortLength = port_high - port_low + 1;
|
||||
} else {
|
||||
/* Set default values */
|
||||
la->aliasPortLower = 0x8000;
|
||||
la->aliasPortLength = 0x8000;
|
||||
}
|
||||
LIBALIAS_UNLOCK(la);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue