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:
Lutz Donnerhacke 2021-07-03 23:03:07 +02:00
parent 24f398e7a1
commit f284553444

View File

@ -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);
}