<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>12628</bug_id>
          
          <creation_ts>2007-08-25 14:08:37 +0400</creation_ts>
          <short_desc>segmentation fault netstat -I eth0</short_desc>
          <delta_ts>2008-12-03 12:55:04 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>net-tools</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>patch</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="viy">viy</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>glebfm</cc>
    
    <cc>icesik</cc>
    
    <cc>ldv</cc>
    
    <cc>php-coder</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>54476</commentid>
    <comment_count>0</comment_count>
    <who name="viy">viy</who>
    <bug_when>2007-08-25 14:08:37 +0400</bug_when>
    <thetext>$ rpm -qf /bin/netstat     
net-tools-1.60-alt13
igor@breeze ~ $ sudo netstat -I eth0     
zsh: segmentation fault  sudo netstat -I eth0
igor@breeze ~ $ uname -a
Linux breeze.localdomain 2.6.18-ovz-smp-alt14 #1 SMP Wed May 2 15:41:34 MSD 2007
x86_64 GNU/Linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55378</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2007-09-18 12:49:08 +0400</bug_when>
    <thetext>confirmed; who wants to update net-tools patchset from FC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59260</commentid>
    <comment_count>2</comment_count>
    <who name="Igor Zubkov">icesik</who>
    <bug_when>2007-12-10 04:56:53 +0300</bug_when>
    <thetext>(In reply to comment #1)
&gt; confirmed; who wants to update net-tools patchset from FC?

i will sync with patches with F and report about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74148</commentid>
    <comment_count>3</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-07-18 10:04:36 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; i will sync with patches with F and report about this.

*ping*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74149</commentid>
    <comment_count>4</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-07-18 10:49:42 +0400</bug_when>
    <thetext>Как netstat -I (без аргумента) тоже падает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74150</commentid>
    <comment_count>5</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-07-18 11:04:02 +0400</bug_when>
    <thetext>Ошибка в этом куске кода (файл netstat.c):

1787     case &apos;I&apos;:
1788             if (optarg &amp;&amp; strcmp(optarg, &quot;(null)&quot;))
1789             if (optarg[0] == &apos;=&apos;) optarg++;
1790                 flag_int_name = strdup(optarg);
1791         flag_int++;
1792         break;

Первый if проверяет, чтобы optarg не была NULL, проверяет довольно странно (я бы проверял как otarg != NULL или просто optarg), но идея в этом. Второй if проверяет случай когда опция укзаана как -I=eth0. Если аргумент знак равно, то переходим к следующему аргументу строки. И наконец третья строка пытается сохранить в flag_int_name копию аргумента (eth0).

Падает всё в случае, когда optarg == NULL. Судя по отступам можно понять чего автор хотел, вот только он забыл добавить скобок. Он хотел, чтобы строка 1789 и 1790 выполнялись, только если первый if вернул истину. Но получилось, что строка 1790 выполняется всегда, т.к. не принадлежит телу первого if-а.

Кстати, в оригинальном коде программы этого куска кода нет. Он привнесен патчами net-tools-1.60-rh-netstat-ifaceopt.patch и net-tools-1.60-rh-netstat-I.patch (кстати, патчи добавляют опцию -I но не патчат man, в итоге а мане этой опции нет, что тоже баг).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74151</commentid>
    <comment_count>6</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-07-18 11:15:58 +0400</bug_when>
    <thetext>А, ну всё понятно.

Вот каким должен быть код:

1787     case &apos;I&apos;:
1788             if (optarg != NULL) {
1789                 if (optarg[0] == &apos;=&apos;) {
1790                     optarg++; 
1791                 }   
1792                 flag_int_name = strdup(optarg);
1793             }   
1794         flag_int++;
1795         break;

Обратите внимание, что вызывать netstat -I eth0 -- НЕ правильно. Надо: netstat -I=eth0

Вот валидные опции:
- I
- --interfaces
- I=eth0
- --interfaces=eth0

Вот так с приведенным выше кодом всё будет работать. А на -I eth0 будет выдавать usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74153</commentid>
    <comment_count>7</comment_count>
      <attachid>2708</attachid>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-07-18 11:40:24 +0400</bug_when>
    <thetext>Created attachment 2708
Updated patch version

Для исправления этой баги нужно:
- поравить спек (не прикладывать патч net-tools-1.60-rh-netstat-I.patch)
- удалить патч net-tools-1.60-rh-netstat-I.patch
- заменить патч net-tools-1.60-rh-netstat-ifaceopt.patch на тот, который я сейчас прикладываю

После этого всё работает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81952</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-11-30 18:56:51 +0300</bug_when>
    <thetext>Вроде бы fixed in 1.60-alt14</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2708</attachid>
            <date>2008-07-18 11:40:24 +0400</date>
            <delta_ts>2008-07-18 11:40:24 +0400</delta_ts>
            <desc>Updated patch version</desc>
            <filename>net-tools-1.60-rh-netstat-ifaceopt.patch</filename>
            <type>text/plain</type>
            <size>2145</size>
            <attacher name="Slava Semushin">php-coder</attacher>
            
              <data encoding="base64">LS0tIG5ldC10b29scy0xLjYwL25ldHN0YXQuYy5pZmFjZW9wdAkyMDA1LTAzLTAxIDEyOjExOjQz
LjY5NTY2MTYzMiArMDEwMAorKysgbmV0LXRvb2xzLTEuNjAvbmV0c3RhdC5jCTIwMDUtMDMtMDEg
MTI6MTY6MzcuNjAxOTgxMDgwICswMTAwCkBAIC0xNjU4LDEwICsxNjU4LDExIEBACiB7CiAgICAg
ZnByaW50ZihzdGRlcnIsIF8oInVzYWdlOiBuZXRzdGF0IFstdmVlbk5jQ0ZdIFs8QWY+XSAtciAg
ICAgICAgIG5ldHN0YXQgey1WfC0tdmVyc2lvbnwtaHwtLWhlbHB9XG4iKSk7CiAgICAgZnByaW50
ZihzdGRlcnIsIF8oIiAgICAgICBuZXRzdGF0IFstdm5OY2Flb2xdIFs8U29ja2V0PiAuLi5dXG4i
KSk7Ci0gICAgZnByaW50ZihzdGRlcnIsIF8oIiAgICAgICBuZXRzdGF0IHsgWy12ZWVuTmFjXSAt
aVs8SWZhY2U+XSB8IFstY25OZV0gLU0gfCAtcyB9IFtkZWxheV1cblxuIikpOworICAgIGZwcmlu
dGYoc3RkZXJyLCBfKCIgICAgICAgbmV0c3RhdCB7IFstdmVlbk5hY10gLUlbPElmYWNlPl0gfCBb
LXZlZW5OYWNdIC1pIHwgWy1jbk5lXSAtTSB8IC1zIH0gW2RlbGF5XVxuXG4iKSk7CiAKICAgICBm
cHJpbnRmKHN0ZGVyciwgXygiICAgICAgICAtciwgLS1yb3V0ZSAgICAgICAgICAgICAgICBkaXNw
bGF5IHJvdXRpbmcgdGFibGVcbiIpKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgXygiICAgICAgICAt
aSwgLS1pbnRlcmZhY2VzPVs8SWZhY2U+XSBkaXNwbGF5IGludGVyZmFjZSB0YWJsZVxuIikpOwor
ICAgIGZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgIC1JLCAtLWludGVyZmFjZXM9WzxJZmFjZT5d
IGRpc3BsYXkgaW50ZXJmYWNlIHRhYmxlIGZvciA8SWZhY2U+XG4iKSk7CisgICAgZnByaW50Zihz
dGRlcnIsIF8oIiAgICAgICAgLWksIC0taW50ZXJmYWNlcyAgICAgICAgICAgZGlzcGxheSBpbnRl
cmZhY2UgdGFibGVcbiIpKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgXygiICAgICAgICAtZywgLS1n
cm91cHMgICAgICAgICAgICAgICBkaXNwbGF5IG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwc1xu
IikpOwogICAgIGZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgIC1zLCAtLXN0YXRpc3RpY3MgICAg
ICAgICAgIGRpc3BsYXkgbmV0d29ya2luZyBzdGF0aXN0aWNzIChsaWtlIFNOTVApXG4iKSk7CiAj
aWYgSEFWRV9GV19NQVNRVUVSQURFCkBAIC0xNzAwLDcgKzE3MDEsOCBAQAogICAgIHsKIAlBRlRS
QU5TX09QVFMsCiAJeyJ2ZXJzaW9uIiwgMCwgMCwgJ1YnfSwKLQl7ImludGVyZmFjZXMiLCAyLCAw
LCAnaSd9LAorCXsiaW50ZXJmYWNlcyIsIDIsIDAsICdJJ30sCisJeyJpbnRlcmZhY2VzIiwgMCwg
MCwgJ2knfSwKIAl7ImhlbHAiLCAwLCAwLCAnaCd9LAogCXsicm91dGUiLCAwLCAwLCAncid9LAog
I2lmIEhBVkVfRldfTUFTUVVFUkFERQpAQCAtMTczOCw3ICsxNzQwLDggQEAKICAgICBnZXRyb3V0
ZV9pbml0KCk7CQkvKiBTZXQgdXAgQUYgcm91dGluZyBzdXBwb3J0ICovCiAKICAgICBhZm5hbWVb
MF0gPSAnXDAnOwotICAgIHdoaWxlICgoaSA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJNQ0ZB
OmFjZGVncGhpOjpuTm9yc3R1VnY/d3hsIiwgbG9uZ29wdHMsICZsb3ApKSAhPSBFT0YpCisKKyAg
ICB3aGlsZSAoKGkgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiTUNGQTphY2RlZ3BoaUk6Om5O
b3JzdHVWdj93eGwiLCBsb25nb3B0cywgJmxvcCkpICE9IEVPRikKIAlzd2l0Y2ggKGkpIHsKIAlj
YXNlIC0xOgogCSAgICBicmVhazsKQEAgLTE3NzMsOSArMTc3MywxNiBAQAogCWNhc2UgJ3AnOgog
CSAgICBmbGFnX3ByZysrOwogCSAgICBicmVhazsKKwljYXNlICdJJzoKKwkgICAgaWYgKG9wdGFy
ZyAhPSBOVUxMKSB7CisJICAgICAgICBpZiAob3B0YXJnWzBdID09ICc9JykgeworCSAgICAgICAg
ICAgIG9wdGFyZysrOworCSAgICAgICAgfQorCSAgICAgICAgZmxhZ19pbnRfbmFtZSA9IHN0cmR1
cChvcHRhcmcpOworCSAgICB9CisJICAgIGZsYWdfaW50Kys7CisJICAgIGJyZWFrOwogCWNhc2Ug
J2knOgotICAgICAgICAgICAgaWYgKG9wdGFyZyAmJiBzdHJjbXAob3B0YXJnLCAiKG51bGwpIikp
Ci0gICAgICAgICAgICAgICAgZmxhZ19pbnRfbmFtZSA9IHN0cmR1cChvcHRhcmcpOwogCSAgICBm
bGFnX2ludCsrOwogCSAgICBicmVhazsKIAljYXNlICduJzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>