MediaTekスマートフォンとの選び方 2015年1月版

2012年7月に「Media Tekスマートフォンとのつきあい方」という記事を書いた。
それから2年が過ぎ、2015年ともなると、内容がいろいろ変わってきてる点がある。
それを含めて書き直してみた。


台湾のMediaTek (MTK)(台湾表記:聯發科技/中国表記:联发科技)社製のチップセットを使用した低価格スマートフォンは、日本では、2013年4月に発売されたMT6577搭載の「Covia FleaPhone CP-D02」を皮切りに、いろんな機種が発売されています。

2014年は私が把握している限りで11機種発売されています。
(2014/10/21:国内で正式発売されたMediaTekチップ採用のスマートフォン)

2015年も、早速何機種か登場しています。
ただ、初心者には違いとかがよく分からないと思います。

見分け方のポイントについてお伝えします。

必要な覚悟
MediaTek SoC搭載製品に限らない、低価格帯スマートフォンについての基本的な心構えとして・・・

「OSのメジャーバージョンアップは期待するな」
「1年で使い潰すものとして考えておく」

なので、1年ぐらいで買い替えるモノとして考えておくといいと思います。

各種スペックについて

スペックについて注意が必要な点を上げます。

・CPU(SoC)の選択について
正直なところ、いまであればぎりぎり最低ラインのMT6572(Cortex-A7 2コア)以上であればなんとかなります。
しかし、これからを考えるとMT6582(Coretex-A7 4コア)以上を搭載したものを選択するべきだと思います。
細かいSoCの種類については、下の方にある「SoC(CPU)について」を見てください。

・RAMとストレージ容量について
RAM512MBだけならまだなんとかなりますが、ストレージ4GBは駄目です。
あっという間にストレージが一杯になってしまうでしょう。

できれば、RAM 1GB/ストレージ 8GBとなっているものより上のものを選びましょう。

・液晶について
3インチ台は、画面タッチしての文字入力が結構つらいです。
中国では4.5インチより下の需要がかなり減っているようで、最近のメインは5.0インチ~6.0インチ、と大型化してきています。
特にLTE対応モデルは、5.0インチで小さい方というような状況です。
日本での販売もだんだんとそっちよりになるのではないかと予測されます。

・カメラ
基本的に、MediaTek SoC採用モデルだと、あんまり性能がよくない、ということが多いです。
特にカメラ性能について謳ってない場合はあまり期待しないでおきましょう。

・GPS
GPS系統はちょっと問題が発生しやすいポイントです。

例えばドコモスマートフォンでは、SPモード使用時はドコモが用意している位置情報補完システムSUPL(Secure User Plane Location)を使用して、精度の高い位置情報が取得できるようになっています。
しかし、MediaTek機種に限らず海外モデルでは、どういったものを使うかは、その端末の設定次第となり、千差万別です。
このため、「GPSの取得が遅い」と言われるような状態となります。

IIJmio meeting 5「トークセッション. MVNOとGPSについて (大内)

次に、最近はGPS以外の衛星、例えば、ロシアのGLONASSや、中国のBeido(北斗)、日本のQZSS(準天頂衛星システム/みちびき)に対応している機種があります。

最近のMediaTek SoC採用機種では、GPSとGLONASSの2つに対応しているものが多いです。
それ以外のBeido(北斗)、QZSS(みちびき)については、SoC自体は対応も可能であったりしますが、firmware側に機能が組み込まれていないことが多く、基本、対応していないと思った方がいいでしょう。

現在、どの位置情報衛星を使っているかを確認するには「AndroiTS GPS Test」を使用することをお薦めします。

Dual SIMに意味があるか?
SIMが2枚させる「Dual SIM」にどんな意味があるのか?
結論から言ってしまえば、現状では、ほとんど意味がありません。

まず、2015年1月現在販売されている端末で、さした2枚のSIMが同時に日本国内で利用可能となるものは存在していません。
(Android 2.2時代までさかのぼると1機種 Coolpad W770だけ存在しているが今は無い)

「日本国内」と限定しているのは、「WCDMA」と「GSM」の2つであれば同時に利用できるためです。
日本にはGSM回線がありませんので、日本では使用できない、ということになります。
日本で同時に利用可能となるためには「WCDMA」+「WCDMA」もしくは「LTE」+「WCDMA」、「LTE」+「LTE」に対応している必要があります。

では、「SIMが2枚させる」ことを謳っているものは、日本国内でどういうことに使えるか?
同時には使えないので、パケットを使う回線を切り替える、ぐらいしか用途がありません。
正直あまり意味がないです。

このため、「Dual SIM対応」というのは、利点と言いづらい状態なので、気にしない方がいいでしょう。

国内販売のMediaTek搭載機について
国内で販売されているMediaTek搭載機は、海外販売のものにはない特徴があります。

まず1つは、法的な問題のクリアです。
技適等証明を取得して、法的な問題をクリアしています。
場合によっては、ドコモの通信網との接続試験(相互接続試験/IOT)を行い検証も取得しているものもあります。

なお、先日、技適を取得してない端末でもアメリカFCCの認可があれば国内での利用が可能になる、というようなデマが流れましたが、これは、ちゃんと考えればあり得ないことになります。
なぜなら、アメリカFCCによる検査では、アメリカで使える周波数帯での検査しか行われないためです。
アメリカでは、国際的に使用されている「WCDMA 2100MHz帯」や「WiFi 2.4GHz 14ch」などが使用できません。
これらは日本ではメインで使用されているのに、検査されていないにも関わらず使える様にする、というのはおかしな話となります。
(ちなみに、アメリカなど他の国でも同様で、他国の認証例えば日本の技適は通っていても、自国のFCCの認証が通ってない機器を使うと、もちろん違法です。なので海外利用時の違法状態を無くすため、きちんとした端末メーカでは各国の認証を取得しています)

もう1つは、音声/SMS契約がないデータonly SIMで使える様にする設定、です。
MediaTek端末では各端末メーカでは、MediaTekから提供されているベースのAndroidを、それぞれで使用しているタッチパネルやボタンなどに応じてカスタマイズし、使用しています。
基本状態では、音声/SMS契約がないデータonly SIMを使用した場合、アンテナが立たず、データ通信が行えない状態となってしまいます。

2015年1月現在、日本で販売されている格安SIMは、音声/SMS契約がないSIMが多いので、これに対応していないのは致命的となります。
このため、日本国内で販売される格安スマートフォンでは、音声/SMS契約がなくてもきちんと通信できるようにカスタマイズしたAndroidを搭載しています。
また、このカスタマイズを行うついでに、各社のAPN登録を追加しています。

なお、データonly SIMが使用できない場合、ブローヴちゃんで紹介されている「Android + b-mobile データ専用 SIM で電界強度を表示する」のMotorolaとXperiaの対策、もしくは「Android + docomo MVNO データ通信専用 SIM のセルスタンバイ&アンテナピクト問題対策 Xposed モジュール」を行うと、データonly SIMでも使える様になる場合があります。




SoC(CPU)について
MediaTekのSoC(CPU)は、いろいろあります。
数字が大きければ性能がいいのかと言えば、そうでもないところがあります。

まず、スマートフォン向けは「MT65xx」「MT67xx」という型番で、タブレッド向けは「MT81xx」「MT83xx」「MT87xx」という型番になっています。

2015年1月現在、MediaTekのスマートフォン向けSoCで買っていいものは以下のもので、性能が低い方から順に並べるとこんな感じです。

MT6572/MT6572M
  廉価向け2コアのもの。
  Cortex-A7 2コア 1.3GHzが基本スペック。
  MT6572Mだとクロックが低く、大抵1.0GHzぐらい
  2015年にもなるとRAM 512MB/ストレージ4GB機種は「ゴミ」に近いので激安でなけりゃ買ってはいけない。
  中国では、2014年 MT6572が当てられていた価格帯は、現在、MT6582に移行しつつある。

MT6582/MT6582M
  廉価向け4コアのもの。
  1万円前後でQuadcore搭載のやつは大抵コレ
  Cortex-A7 4コア 1.3GHzが基本スペック。
  MT6582Mだとクロックが低く、大抵1.0GHzぐらい
  基本は3Gのみだが、周辺回路チップMT6290と組み合わせLTE対応の製品もある
  2015年1月時点では、廉価機種を買うならせめてコレを積んでいる機種を選ぶべきである。

MT6592/MT6592T
  8コアのもの。
  Cortex-A7 8コア 1.7GHzが基本スペック
  MT6592Tは高クロック版で、2.0GHz
  基本は3Gのみだが、周辺回路チップMT6290と組み合わせLTE対応の製品もある
  単純なCPU性能的には、MT6595やMT6732より上となる場合がある。

MT6595
  LTE対応のbig.LITTLEな8コアSoC
  Cortex-A17 4コア+Cortex-A7 4コア 2.5GHzで、合計8コアといっている。
  SoC内にLTE関連部分も取り込まれている。

MT6732
  64bit 4コアCPUで、LTE対応のSoC
  Cortex-A53 4コア 1.5GHz, GPU Mali-T760
  中国では2014年末から搭載製品が登場してきており、これまでMT6582搭載機が当てられていた価格帯で販売されている。

MT6752
  64bit 8コアCPUで、LTE対応のSoC
  Cortex-A53 8コア 1.7GHz, GPU Mali-T760

今後、製品が出てくるものとしては、以下のものがあります。
以下については登場予定順で並べています。

MT6735
  CDMA2000にも対応したMT6732
  ただ、対応したことでGPUのスペックが下がっている
  Cortex-A53 4コア 1.5GHz, GPU Mali-T720

・MT6753
 CDMA2000にも対応してたMT6752
 こちらもやはりGPUのスペックが下がっている
 Cortex-A53 8コア 1.5Hz, GPU Mali-T720

・MT6795
 64bit 8コア 2.2GHz、とまでしか公表されていないもの
 GPUはIMG G6200/700MHzとなっている。
 FDD-LTE/TDD-LTE/TD-SCDMA/WCDMA/GSM対応

・MT6580
 MT6582の後継SoC、3Gのみ対応
 Cortex-A7 4コア 1.3GHzという点は同じだが、よりコストダウンがはかられている

・MT6570
 MT6572の後継SoC、3Gのみ対応
 Cortex-A7 2コア 1.3GHzという点は同じだが、よりコストダウンがはかられている

・MT67??
 LTE カテゴリ6に対応した64bit 8コアSoCを 2015年Q4予定
 製造プロセスが20nmになることで、より省電力になることが見込まれる

なお、いまさら買ってはいけないものとしては、以下のSoCがあります。
MT6516(GSM only),MT6573(初のWCDMA対応),MT6575(1コア),MT6577(2コア),MT6517(MT6577のTD-SCDMA版),

(参考1:MediaTekのスマートフォン向け3G/4G対応SoC一覧(2014/10/24))
(参考2:MTK手机网の20nm/64位8核/CAT6 联发科Q4推重磅旗舰)

シリアル/RS-232CをLANにつなげる機器 Hi-Link HLK-RM04を入手した

先日メーカであるHi-Link社に直接発注したHLK-RM04 startkitですが、無事に到着しました。
参考記事:「シリアル機器をTCP/IPでアクセスする

ちなみに、ものは、以下のとほぼ同等のようです。

Keynice RS-232C端子搭載 Wi-Fi 802.11n/g/b対応 無線LAN親機 Wifi接続ルーター – シリアルポートRS232 to Wi-Fi 150M

aliexpressではいくつか似たようなものがありますが、今回買ったのは送料込みで$21.68となる「serial/uart Embeded wifi module HLK-RMO4 startkit with 8M flash 32M ram + free shipping」です。
メモリ8MB、FLASH 32MBのモデルです。(メモリ 4MB/FLASH 16MBモデルもある)

届いたもの
IMG_3866s
・ボード
・WiFiアンテナ
・ACアダプタ
マニュアルは一切無し。

メーカページを探すと「DOWNLOAD → WIFI」に資料を発見。
「HLK-RM04 user manual」があれば、とりあえずなんとかなります。

「HLK-RM04 config tools」の中には「HLK-RM04 discover」と設定変更ツールが含まれていましたが、製品として一括設定するような場合に必要になるソフトで、通常はいらないような感じです。

電源を繋いでHLK-RM04のLANポートと、パソコンとをLANケーブルで接続!
IMG_3869s

パソコンには、DHCPで、192.168.16.0/24のIPアドレスが割り当てられました。
HLK-RM04の設定画面のアドレスは「http://192.168.16.254」です。
ユーザ名「admin」、パスワード「admin」でログイン完了。

設定画面は以下の様な感じでした。


「Serial2Net Setting」にて設定できる項目

上半分の設定項目は「Network Mode」の選択で大きく変わります。
「Default」LAN経由接続とWiFi AP機能両方使用。DHCPサーバが動作するが、細かい設定はできない
「ETH-SERIAL」LAN経由接続のみ使用。IPアドレスをDHCP/Staticで指定し、アクセスする
「WIFI(CLIENT)-SERIAL」WiFi経由で他のAPに接続。
「WIFI(AP)-SERIAL」WiFi AP機能を使用。こちらだとIPアドレス指定も可能

下半分はシリアル接続に関する設定です。

Serial Configurationなどは、シリアル接続に関する項目なのは分かると思います。
わかりにくいと思うのは、下側にある「Network Mode」の意味だと思います。
標準設定の「Network Mode: server」というのは、「Local/Remote Port Number」で指定したポートに対して、Tera Termなどで接続すると、シリアル機器にアクセスできるようになる、という設定です。

「Network Mode: client」になると、「Remote Server Domain/IP」が入力できるようになります。これと、「Local/Remote Port Number」を組み合わせ、指定したIPアドレスのportに、アクセスしにいく、というものになります。

Network Mode:「Default」LAN経由接続とWiFi AP機能両方使用
001

Network Mode:「ETH-SERIAL」LAN経由接続のみ使用
010

Network Mode:「WIFI(CLIENT)-SERIAL」WiFi経由で他のAPに接続
011

Network Mode:「WIFI(AP)-SERIAL」WiFi AP機能を使用。こちらだとIPアドレス指定も可能
012


次は「Special Settings」です。
こちらは、拡張設定なので、通常、設定しなくても問題ないです。
状況に応じて「WiFi Channel」や「SERIAL RTS」「SERIAL XON/XOFF」の使用状況を変更します。

002


「Serial2Net Settings: UART2」は、システム的には存在しているが、標準の開発用ボードではコネクタが実装されていない2つめのシリアルポートに対する設定です。
自分で開発したボードを使う場合は設定しましょう。

003


「System Management」は、管理者名、パスワードの変更で使います。
004


「Settings Management」は、設定の保存、投入、リセットが行えます。
005


「Upload Firmware」では、firmwareの更新が行えます。
こちらに届いたものだと「V1.78(Jul 23 2013)」というバージョンでした。
006


「Status」は、現状の動作状況を確認できます。

007


「Station List」と「Station Link Status」はWiFi接続時のステータス表示です。

008

009


実際にシリアル機器をつなごうとしたら・・・ケーブルが手元になく今日は断念。

CVE-2015-0235はRHEL4/CentOS4に影響する&修正版提供開始(2015/01/30 20:40版)

CVE-2015-0235 というglibcに大きめのバグが見つかった模様。

RedHat Enterprise Linux 4 / CentOS 4に対して影響があるのかどうかを調べてみた。

まずは、RedHat公式情報系

・RedHat Bugzilla:Bug 1183461 – (CVE-2015-0235) CVE-2015-0235 glibc: __nss_hostname_digits_dots() heap-based buffer overflow
 ・RHEL Knowledgebase Articles:GHOST: glibc vulnerability (CVE-2015-0235) / GHOST: glibc 脆弱性 (CVE-2015-0235)
 ・RHEL CVEデータベース:CVE-2015-0235
 ・RHEL4向け:RHSA-2015:0101:Critical: glibc security update
 ・RHEL5向け:RHSA-2015:0090:Critical: glibc security update
 ・RHEL6,RHEL7向け:RHSA-2015:0092:Critical: glibc security update

はい、RHEL4も対象になっています。

実際に確認してみるため、openwallにあるCVE-2015-0235についての詳細報告書「Qualys Security Advisory CVE-2015-0235 – GHOST: glibc gethostbyname buffer overflow」の「4 – Case studies」の記述を試してみる。

実行した際に「vulnerable」と出たら、問題あり。
「not vulnerable」だったら問題なし、というもの。

[root@cent4 201501]# mkdir security
[root@cent4 201501]# cd security/
[root@cent4 security]# rpm -qa|grep glibc|sort
警告: only V3 signatures can be verified, skipping V4 signature
glibc-2.3.4-2.57
glibc-2.3.4-2.57
glibc-common-2.3.4-2.57
glibc-devel-2.3.4-2.57
glibc-devel-2.3.4-2.57
glibc-headers-2.3.4-2.57
glibc-kernheaders-2.4-9.1.103.EL
[root@cent4 security]# cat > GHOST.c << EOF
> #include <netdb.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <errno.h>
>
> #define CANARY "in_the_coal_mine"
>
> struct {
>   char buffer[1024];
>   char canary[sizeof(CANARY)];
> } temp = { "buffer", CANARY };
>
> int main(void) {
>   struct hostent resbuf;
>   struct hostent *result;
>   int herrno;
>   int retval;
>
>   /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
>   size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
>   char name[sizeof(temp.buffer)];
>   memset(name, '0', len);
>   name[len] = '\0';
>
>   retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
>
>   if (strcmp(temp.canary, CANARY) != 0) {
>     puts("vulnerable");
>     exit(EXIT_SUCCESS);
>   }
>   if (retval == ERANGE) {
>     puts("not vulnerable");
>     exit(EXIT_SUCCESS);
>   }
>   puts("should not happen");
>   exit(EXIT_FAILURE);
> }
> EOF
[root@cent4 security]# ls
GHOST.c
[root@cent4 security]# gcc GHOST.c -o GHOST
[root@cent4 security]# ls
GHOST  GHOST.c
[root@cent4 security]# ./GHOST
vulnerable
[root@cent4 security]#

「vulnerable」なので、「問題あり」確定です。

修正版については、RHEL4の通常サポートは終了。現在はELSと呼ばれる特別な契約者向けに提供されているものだけが更新されています。

前述の「RHSA-2015:0101 Critical: glibc security update」にあるとおり、修正されたglibcのバージョンは「glibc-2.3.4-2.57.el4.2」となります。

ただ、このバージョンは通常の方法ではRHEL4およびCentOS4には提供されません。

しかし、RHEL4のソースを元にOracleで再構成した、Oracle Linux 4は、まだサポートを行っています。
こちらから、ファイルを持ってくることで対応が可能となっています。

Oracle Linux 4向けのSource RPMは、「https://oss.oracle.com/el4/SRPMS-updates/」にて提供されています。
Oracle LinuxではRHEL4とパッケージバージョンが若干異なり「glibc-2.3.4-2.57.0.1.el4.1」となります。
https://oss.oracle.com/el4/SRPMS-updates/glibc-2.3.4-2.57.0.1.el4.1.src.rpm

ただ、今回のことを受けて更新されたコンパイル済みのRPMは、glibc関連だけではなかったりします。
nptl-devel, nscdも更新されています。
このため、今回については、glibcのSource RPMだけを持ってきてコンパイルして適用、というのは、あまりお薦めできないような感じです。

コンパイル済みのRPMファイルについて、Oracle Linuxでは「Oracle Public Yum Server」としてレポジトリを公開しており、適切な設定を行うことで、RHEL4/CentOS4からOracle Linux 4に乗り換え、yumコマンドによるアップデートが行えるようになります。

コンパイル済みRPMファイル自体は「http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/」以下を探せば出てきますので、ページを「2015」で検索し出てくるパッケージが自分のサーバにインストールされているかを確認し、ダウンロードして適用する、ということが可能です。

しかし、依存関係解決とか面倒なので、これを機会にOracle Linux 4に乗り換えてしまう、というのも手かもしれません。

切り替え方法については、「RHEL4/CentOS4をOracle Linux4に!」にて紹介していますので、興味がある方は参照してみてください。
設定は非常に簡単です。

こちらの環境ではOralce Linux 4になっているため「yum update -y」で更新が完了しました。

更新後、再度テストプログラムを実行してみます。

[root@cent4 security]# ./GHOST
not vulnerable
[root@cent4 security]#

「not vulnerable」と出力されるので、脆弱性は修正されている、ということになります。

これで、一安心、といったところです。


<以下は修正版のglibcが出る前に書いたものです。資料として残しておきます>

glibcに大きめのバグが見つかった模様。
CVE-2015-0235

・RedHat Bugzilla:Bug 1183461 – (CVE-2015-0235) CVE-2015-0235 glibc: __nss_hostname_digits_dots() heap-based buffer overflow
 ・RHEL CVEデータベース:CVE-2015-0235
 ・RHEL5向け:RHSA-2015:0090-1:Critical: glibc security update
 ・RHEL6,RHEL7向け:RHSA-2015:0092-1:Critical: glibc security update

RHEL4/CentOS4についての記載が見付からない。

Oracle LinuxのSource RPM置き場 https://oss.oracle.com/el4/SRPMS-updates/ を見ても、2015/01/28 10:35時点では何も無し。

(2015/01/28 23:00 追加)
1時間ぐらい前に「GHOST: glibc vulnerability (CVE-2015-0235)」にRed Hat Enterprise Linux 4 Extended Life Cycle Supportに関する記述が追加された。
いまのところ修正版に関する記述はないが、RHEL4に脆弱性がある、という公式告知になっている。

(2015/01/29 19:30追加)
Red Hat Enterprise Linux ELS (v. 4)に対するSecurity Advisoryが公開された。
RHSA-2015:0101 Critical: glibc security update

ELS契約者向けに glibc-2.3.4-2.57.el4.2 としてリリースされたので、そのうちOracle Linuxにも波及してくるものと想定されるが、現状はまだ公開されていない。

(2015/01/30 14:20追加)
https://oss.oracle.com/el4/SRPMS-updates/ に、glibc-2.3.4-2.57.0.1.el4.1.src.rpmが置かれました。
Oralce Linux 4のpublic yumレポジトリのほう(repo url)にはまだ登録されていないようです。

(2015/01/30 16:30追加)
Oracle Linux 4のpublic yumレポジトリでの配布が始まりました。

以下の16:20ぐらいの段階ではi386(32bit)版のみだったのですが、16:37にはx86_64(64bit)版のディレクトリにもファイルが置かれ始めました。

i386(32bit)版
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/glibc-common-2.3.4-2.57.0.1.el4.1.i386.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/glibc-devel-2.3.4-2.57.0.1.el4.1.i386.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/glibc-headers-2.3.4-2.57.0.1.el4.1.i386.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/glibc-profile-2.3.4-2.57.0.1.el4.1.i386.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/glibc-utils-2.3.4-2.57.0.1.el4.1.i386.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/nptl-devel-2.3.4-2.57.0.1.el4.1.i386.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/nptl-devel-2.3.4-2.57.0.1.el4.1.i686.rpm
 http://public-yum.oracle.com/repo/EnterpriseLinux/EL4/latest/i386/getPackage/nscd-2.3.4-2.57.0.1.el4.1.i386.rpm

64bit(x86_64)版
 

(追加部分おわり)

openwallにあるCVE-2015-0235についての詳細報告書「Qualys Security Advisory CVE-2015-0235 – GHOST: glibc gethostbyname buffer overflow」の「4 – Case studies」には事象確認方法が記載されている。

下記をコンパイルして、実行した際に「vulnerable」と出たら、問題あり。
「not vulnerable」だったら問題なし、というもの。

#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define CANARY "in_the_coal_mine"

struct {
  char buffer[1024];
  char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };

int main(void) {
  struct hostent resbuf;
  struct hostent *result;
  int herrno;
  int retval;

  /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
  size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
  char name[sizeof(temp.buffer)];
  memset(name, '0', len);
  name[len] = '\0';

  retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);

  if (strcmp(temp.canary, CANARY) != 0) {
    puts("vulnerable");
    exit(EXIT_SUCCESS);
  }
  if (retval == ERANGE) {
    puts("not vulnerable");
    exit(EXIT_SUCCESS);
  }
  puts("should not happen");
  exit(EXIT_FAILURE);
}

さて・・・CentOS4ではどうなっているのか?

[root@cent4 201501]# mkdir security
[root@cent4 201501]# cd security/
[root@cent4 security]# rpm -qa|grep glibc|sort
警告: only V3 signatures can be verified, skipping V4 signature
glibc-2.3.4-2.57
glibc-2.3.4-2.57
glibc-common-2.3.4-2.57
glibc-devel-2.3.4-2.57
glibc-devel-2.3.4-2.57
glibc-headers-2.3.4-2.57
glibc-kernheaders-2.4-9.1.103.EL
[root@cent4 security]# cat > GHOST.c << EOF
> #include <netdb.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <errno.h>
>
> #define CANARY "in_the_coal_mine"
>
> struct {
>   char buffer[1024];
>   char canary[sizeof(CANARY)];
> } temp = { "buffer", CANARY };
>
> int main(void) {
>   struct hostent resbuf;
>   struct hostent *result;
>   int herrno;
>   int retval;
>
>   /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
>   size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
>   char name[sizeof(temp.buffer)];
>   memset(name, '0', len);
>   name[len] = '\0';
>
>   retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
>
>   if (strcmp(temp.canary, CANARY) != 0) {
>     puts("vulnerable");
>     exit(EXIT_SUCCESS);
>   }
>   if (retval == ERANGE) {
>     puts("not vulnerable");
>     exit(EXIT_SUCCESS);
>   }
>   puts("should not happen");
>   exit(EXIT_FAILURE);
> }
> EOF
[root@cent4 security]# ls
GHOST.c
[root@cent4 security]# gcc GHOST.c -o GHOST
[root@cent4 security]# ls
GHOST  GHOST.c
[root@cent4 security]# ./GHOST
vulnerable
[root@cent4 security]#

駄目でした。

とりあえず、続報待ちということで・・・

(2015/01/30 16:50追記)
Oralce public yum repoで提供されたのでアップデートを行い、試験実施。

[root@cent4 security]# ./ghost
not vulnerable
[root@cent4 security]#

問題がなくなったことを確認できました。

なお、Oracle Linux public レポジトリからyumコマンドを使ってファイルを持ってこれるようにするには「RHEL4/CentOS4をOracle Linux4に!」で紹介しているようにOracle Linuxに切り替えてしまう、というのが簡単でいいと思います。

Polaroid piguの本体が捨て値?

NTTレゾナント、3G対応SIMフリースマホが税込4980円、OCNのSIM開通費用込み」というニュースが流れてきた。

プレスリリース:スマホデビューに最適!音声通話も対応! 「goo Simseller」にて、 SIMフリースマホを業界最安値4,980円で販売開始
販売店:NTTコムストア by goo Simseller」「NTTコムストア by goo Simseller 楽天市場店」「NTTコムストア by goo Simseller Yahoo!ショッピング店

何が変わっているかって
・Polaroid pigu本体価格 9601円(税込)
・OCN モバイル ONE 通話対応SIM 3240円(税込)
がセットで「特価 4980円(税込)」といっているあたり。

まぁ、この値段なので、最初、spreadtrumチップ採用のやつなのかな?と思ったのですが、dual-coreでWCDMA対応のやつがSC7727Sしか存在せず、搭載された製品も確認できていないので、恒例のMediaTek MT6572シリーズの中でも、ローコスト版のMT6572M搭載製品かな?というところ。

スペックとしては
・Android 4.4
・デュアルコアプロセッサ 1.0GHz(おそらくMediaTek MT6572M)
・RAM 512MB / ROM 4GB
というのは、JIAYU F1を半年以上使った経験で言えば、まぁ使えるレベル。
ただし、大きなアプリを入れると、あっという間に一杯になります。
そして、RAMが狭いのでアプリの同時起動ができないので、複数アプリを頻繁に切り替えて使いたい場合に遅く感じると思います。

また、画面がHVGA(480×320)というあたりは難所になります。
特にタッチパネル感度がどうなっているか、というあたり。
ここがまずいと、かなり使いにくいです。
特に文字入力がつらいです。

果たしてこの製品はどれくらいの感度であることやら・・・

ちなみに、このサイズの先駆者freetel FT123Aは、タッチパネル感度がアレだったので、使いにくかったです。


あ・・・そうそう
香港のElephoneでは「WCDMA対応の4.5インチ 4コアの格安スマホElephone G1登場!なんと定価$49.99」なんて感じで、こんなんより性能が上の機種が販売中です。

あと・・・・・・・・

個人的には、まともに使いたいんだったら、piguではなく、1万円の機種を買った方がいいです。

MT6572搭載2つ折りAndroid 大显(Daxian)W189

Aliexpressを見ていたら、2つ折りAndroidが$98.57、というセールを見かけた。

Dual Touch Screen Flip Cell Phones For Seniors Old Man People MTK6572 Dual Core 5MP 512MB/4GB Android OTG GPS 3G Mobile Phone
HTB1bLF3HXXXXXbWXpXXq6xXFXXXKHTB17648HXXXXXabXXXXq6xXFXXXH

中国の「大显通讯(Daxian)」というメーカが出している「W189」という端末のようだ。

3.5インチ 480×320という低解像度の液晶ではありますが

・MediaTek MT6572搭載
・RAM 512MB / ROM 4GB (メーカページだとROM 1GBという表記)
・WCDMA 850/900/1900/2100MHz (メーカページだとWCDMAという表記しかない)
・Android 4.2.2
という昨今使用するには最低限のことはクリア

カメラは背面300万画素、前面30万画素

変わっている点として、液晶は両サイドについている、ということが上げられます。
シャープの端末であったような、ぐるっと回転するような仕組みを入れるのはコスト的に駄目だったみたいで、構造的に容易な両面に付ける、という荒技に出てしまったようです。
荒技過ぎて、外側はタッチパネル、開いて使う時はタッチできずキー操作のみ、という仕様です。

内屏参数 屏幕像素:320×480;屏幕尺寸:3.5(英寸),TFT,非触摸屏
外屏参数 屏幕像素:320×480;屏幕尺寸:3.5(英寸),TFT,电阻

また、普通のAndroidの他、らくらくホン的なモードも用意されているようです。

日本語のUIは入ってないようではありますが、aliexpressのfeedback欄を見てみると、「This Device has good Japanese font.」なんて書かれたりしているので、日本語表示をしたときに中華フォントになる、という事態は避けられるみたいです。

大显通讯では、「W2015」という2つ折り機も出していますが、こちらはGSMのみのガラケーでした。