Bug 20474

Summary: Некорректная отработка firewall-advanced (alterator-firewall) - возможен вывод не полного списка сетевых интерфейсов
Product: ALT Linux Server Reporter: Александр <alexander.sandetsky>
Component: bugsAssignee: Anton V. Boyarshinov <boyarsh>
Status: NEW --- QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P3    
Version: 4.0.0   
Hardware: x86   
OS: Linux   

Description Александр 2009-06-17 09:57:41 MSD
Ошибка замечена в firewall-advanced (alterator-firewall-0.2-alt6-M40.1)

Строка match функции iptables_list_ifaces  в некоторых случаях некорректно получает список сетевых интерфейсов доступных в системе.

конкретнее - интерфейс может иметь индекс более 9, что не обрабатывается соответствующим шаблоном regexp - /^[[:digit:]]:+[[:space:]]
------------------------------------------------------------
вот вывод ip addr show у меня:
[root@ns-1 filter]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:09:6b:7f:df:35 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:cb:80:be:b6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global eth1
17: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1476 qdisc pfifo_fast qlen 3
    link/ppp
    inet 88.87.89.147 peer 88.87.65.91/32 scope global ppp0
---------------------------------------------------------------

В данной ситуации в интерфейсе alterator не присутствует интерфейс ppp0 и строка ppp+, т.к. "17:" проходит мимо "/^[[:digit:]]:"
---------------------------------------------------------------

function iptables_list_ifaces(		cmd, error, line, list, iface, idx, i, n) {
	i = 1
	cmd = IP " addr show"
	while ((error = cmd | getline line) > 0)
	{
		if (match(line, /^[[:digit:]]:+[[:space:]]+([^[:space:]]+):/, list) > 0)
		{

<...skipped...>
=================================================================