2013年10月3日木曜日

NTTのGPL違反 ( その6 )

なんだか、またNTTが懲りずに GPL違反の強制アップデートをたくらんでいるらしいから、過去記事を少しまとめておく。

1)NTTのGPL著作権表示義務違反

2010年3月22日の時点で、

さて、NTTによれば、「公開準備中」という回答なのだが、時間稼ぎをしてうやむやにするつもりなのかな。もう一ヶ月も待たされているのだけどね。

という説明が、担当者からあったけれども、結局3年経った現時点においても公開の正式アナウンスはない(個別には対応していると思うが、当初説明の「正式公開」とは違うと思う)。
すくなくとも、最新バージョンのダウンロードのページの周辺にわかりやすい位置にその旨を表示することをGPLは要請していたと思うが、見つからないと思う。

2) バイナリファイルの形式

配布されている バイナリファイルは単純に tar+gz でまとめただけのものなので、それを4つのファイル(CALLTBL.DEF,FILEINFO.TXT,KERNEL.BIN,ROOTIMG.BIN)に戻すのは容易い。
このうち、KERNEL.BINはlinuxのkernelで、これを黙って配布している点ですでに 完全に黒のGPL違反。

BOOTIMG.BINは、jffs2形式のファイルシステムイメージなので、これを読むには、(debianの場合)
a. apt-get install mtd-utils
b. bigendian形式なので、littleendian 形式に変換する。
    jffs2dump -b --endianconvert=ROOTIMG.BIN.LE ROOTIMG.BIN
c. loopbackでマウントする。
   modprobe mtd
   modprobe mtdblock
   modprobe jffs2
   losetup -vf  ROOTIMG.BIN.LE
  modprobe block2mtd block2mtd=/dev/loop0,131072
  mount -r -t jffs2 /dev/mtdblock0 /mnt

パスワードファイルとかは昔と変化していないみたいね。
( vr-engineerのパスワードも、rootのパスワードも、vr-mainteのパスワードも相変わらず、PARA.BINの中に平文で書かれている。vr-mainteの方は以前に比べると多少判りにくい位置に移動しているけれど、 vr-engineerとrootのはとても判りやすい場所に残っている。)


3) 問題の修正部分(6.30.18) 

diff -c -r OS/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c OS.modified/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c
*** OS/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c      2010-04-07 08:10:59.000000000 +0900
--- OS.modified/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c     2010-05-11 12:35:54.000000000 +0900
***************
*** 81,102 ****
   * the HAL check them by defining a probe method.
   */
  static struct pci_device_id ath_pci_id_table[] __devinitdata = {
!       { 0x168c, 0x0007, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0012, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0013, PCI_ANY_ID, PCI_ANY_ID },
!       { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com */
!       { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com 3CRDAG675 */
!       { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID },     /* IBM minipci 5212 */
!       { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID },     /* some Griffin-Lite */
!       { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
!       { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express 5424 */
!       { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express ???  */
        { 0 }
  };

--- 81,104 ----
   * the HAL check them by defining a probe method.
   */
  static struct pci_device_id ath_pci_id_table[] __devinitdata = {
! //      { 0x168c, 0x0007, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0012, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0013, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com */
! //      { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID },     /* 3com 3CRDAG675 */
! //      { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID },     /* IBM minipci 5212 */
! //      { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID },     /* some Griffin-Lite */
! //      { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
! //      { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
!         { 0x168c, 0x001b, 0x1021,     0x1010     },     /* SC-32KI new */
!         { 0x168c, 0x001b, 0x168c,     0x1062     },     /* SC-32KI */
! //      { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID },     /* PCI Express 5424 */
! //      { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID },     /* PCI Express ???  */
        { 0 }
  };

***************
*** 142,148 ****
        if (pci_enable_device(pdev))
                return (-EIO);

!
  if (pci_request_regions (pdev, "ath"))
      goto bad;

--- 144,150 ----
        if (pci_enable_device(pdev))
                return (-EIO);

! // mizutani
  if (pci_request_regions (pdev, "ath"))
      goto bad;

***************
*** 174,180 ****
         * set it to the value used by other systems.  It may be worth
         * tweaking this setting more.
         */
!       pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8);

        pci_set_master(pdev);

--- 176,182 ----
         * set it to the value used by other systems.  It may be worth
         * tweaking this setting more.
         */
!       pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8);  // mizutani

        pci_set_master(pdev);

***************
*** 196,202 ****
        }
  */
        mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
!

        if (!mem) {
                printk(KERN_ERR "ath_pci: cannot remap PCI memory region\n") ;
--- 198,204 ----
        }
  */
        mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
!     //mem = phymem;

        if (!mem) {
                printk(KERN_ERR "ath_pci: cannot remap PCI memory region\n") ;
***************
*** 238,243 ****
--- 240,257 ----
        if (ath_attach(id->device, dev) != 0)
                goto bad4;

+         if( id->vendor    == 0x168c && id->device    == 0x001b &&
+             id->subvendor == 0x168c && id->subdevice == 0x1062){
+
+             if( !(dev->dev_addr[0] == 0x00 &&
+                   dev->dev_addr[1] == 0x80 &&
+                   dev->dev_addr[2] == 0x87 )) {
+
+                 ath_detach(dev);
+                 goto bad4;
+             }
+         }
+
        athname = ath_hal_probe(id->vendor, id->device);
        printk(KERN_INFO "%s: %s: mem=0x%lx, irq=%d\n",
                dev->name, athname ? athname : "Atheros ???", phymem, dev->irq);


どう見てもセコイ修正だな。プログラムの改良となるべき部分は一切無し。ひたすら改悪が目的の修正だ。

デーブルの大きさが2になってしまったので、binary patchだと、2種類のカードしか使えないけれど、修正するべき場所は多分、0x168c で binary fileを検索してやれば、すぐにわかるのではないかな。

0 件のコメント:

コメントを投稿