bashの脆弱性対処の件(CentOS 5.3)

nifty cloudでCentOS 5.3のまま使用しているサーバがあるのですが、bash脆弱性問題の対処をしましたので一応、一行ですが書いておきます。

$ sudo yum --enablerepo=updates update bash

でOKです。(普通にyum update bashだとNo Packages marked for Updateとなってしまいましたので)

で、動作確認結果は、

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

となればOKのようです。

「エラー : アクション“シェルスクリプトを実行 (Image to Card)”でエラーが起きました。」の続き。

MacでのRaspberry Piのセットアップ時、imgファイルをSDカードに書き込みますがRPi-sd card builder v1.2.appを使うとエラーがでるのでその対処方法を。

http://yohtn.hatenablog.com/entry/2013/07/18/154622
さんの記事を参考にしてみたのですが、

$ sudo dd bs=1m if=Downloads/2014-09-09-wheezy-raspbian.img of=/dev/disk1
dd: /dev/disk1: Resource busy

となってしまいます。

ということで、uMountDiskをしてからddで書いてあげるとうまくいきます。

$ diskutil umountDisk /dev/disk1
Unmount of all volumes on disk1 was successful
$ sudo dd bs=1m if=Downloads/2014-09-09-wheezy-raspbian.img of=/dev/disk1
3125+0 records in
3125+0 records out
3276800000 bytes transferred in 1580.933234 secs (2072700 bytes/sec)
$ 

logcatにURLが出力されることについて

久々に書いてみます。

例えば、某端末にてブラウザでamazonにアクセスすると、logcatには

D/RequestQueue.getProxyHost(HttpHost)( 5312):  host=http://www.amazon.co.jp mNonProxy=null

というのが出力されるのですね。これって一体何の為に出しているのでしょう。
悪意のあるアプリが利用者のアクセス先を特定するため? 普通の使い方ではこのアクセス先がlogcatに出力されることは好ましくないのではと思いました。
気になったのでOS2.3のソースコードを見てみると、

/frameworks/base/core/java/android/net/http/HttpLog.java

class HttpLog {
    private final static String LOGTAG = "http";

    private static final boolean DEBUG = false;
    static final boolean LOGV = DEBUG ? Config.LOGD : Config.LOGV;

    static void v(String logMe) {
        Log.v(LOGTAG, SystemClock.uptimeMillis() + " " + Thread.currentThread().getName() + " " + logMe);
    }

    static void e(String logMe) {
        Log.e(LOGTAG, logMe);
    }
}

/frameworks/base/core/java/android/net/http/RequestQueue.java

private synchronized void setProxyConfig() {
    NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
    if (info != null && info.getType() == ConnectivityManager.TYPE_WIFI) {
        mProxyHost = null;
    } else {
        String host = Proxy.getHost(mContext);
        if (HttpLog.LOGV) HttpLog.v("RequestQueue.setProxyConfig " + host);
        if (host == null) {
            mProxyHost = null;
        } else {
            mActivePool.disablePersistence();
            mProxyHost = new HttpHost(host, Proxy.getPort(mContext), "http");
        }
    }
}

という感じでいずれにせよログ出力が可能なようになっているようです。
このHttp.Log.javaはRequestQueue.java などから呼ばれ、実際にはこちらで制御をしているものと思いました。

ただ、以下はOS4.0.1のものですが、

class HttpLog {
    private final static String LOGTAG = "http";

    private static final boolean DEBUG = false;
    static final boolean LOGV = false;

    static void v(String logMe) {
        Log.v(LOGTAG, SystemClock.uptimeMillis() + " " + Thread.currentThread().getName() + " " + logMe);
    }

    static void e(String logMe) {
        Log.e(LOGTAG, logMe);
    }
}

と変更されており、ログ出力制御が変わっていることでlogcatにもURLが出て来なくなったのではと思いました。

Androidベンチマークその3

SO-02C(XPERIA acro)とSH-13C(AQUOS Phone)のベンチマークもとってみたので載せます。

結果として、SO-02CはIS11Sと同じXPERIA acroの名前ですが、ベンチマークの値としては約1.3倍の差があるように見えます。(IS11Sは1403pt)、SH-13Cは1300pt強でありこのクラスであれば妥当な数値のように思えます。

SO-02C(XPERIA acro) (1091pt)

SH-13C(AQUOS Phone) (1335pt)

Androidベンチマークその2

前回はXOOM入手記念ということでいくつかの端末のベンチマーク(Quadrant standard)結果を掲載しましたが、今回もいくつか新端末を入手しましたので載せたいと思います。
Galaxy S2(2965pt)。さすがDual Core。XOOMよりもベンチ結果がよいのは1.2GHzのDualということもあるのでしょうが現時点では最速端末なのではと思いました。

以下、IS11SとN-06Cは前者がMSM8655、後者がMSM8625という3G通信の箇所が違うだけ(と思われる)兄弟の様なCPUですが、微妙に差があるようです。XPERIA acro(SO-02C)とSH-13Cのベンチマークも後日載せたいと思います。

IS11S(1403pt)

N-06C(1269pt)

android-ndk-r5 (mac)でJNIのbuild

小ハマリしたので一応残しておきます。

ここ(ndkのサイト)からMac OS X (intel)のところにありますandroid-ndk-r5c-darwin-x86.tar.bz2を落としてきて、解凍します。

置き場所は私の場合には/Users/xxxx(アカウント名)/Android/というところにおいたのでフルパスですと
/Users/xxxx/Android/android-ndk-r5
となります。

次にndkまでのPATHを通してあげる必要があるので.bashrcに
export ANDROID_NDK_ROOT=/Users/xxxx/Android/android-ndk-r5
を追加。またPATHに対しても
export PATH=/Users/xxxx/Android/android-ndk-r5:/opt/X11/bin:$PATH

の様に赤字部分を追加してsource .bashrc してあげます。

これでbuildできると思いますのでsamplesの中のhello-jniをbuildしてみると、

iMac:jni xxxx$ ndk-build
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => libs/armeabi/libhello-jni.so
iMac:jni xxxx$

となります。

次にeclipseにてFile->New->Android Project を選択し、いま作ったhello-jniを選びます。

Create project from existing sourceにチェックを入れ、私の例ですと

/Users/xxxx/Android/android-ndk-r5/samples/hello-jni

となります。

min sdkは3からとなっているのでとりあえずAndroid 1.5のところにチェックを入れてFinishを。

次にBuild ConfigurationにてOrder and ExportのところのAndroid 1.5にチェックが外れているのでチェックを入れて準備完了。

これでRUNしてあげると下記のようにHello from JNI!と表示されます。

AndroidのBluetooth対応について

ふと気になったので調べていました。

HSP/HFP/A2DP/AVRCPに関しては概ねどの端末も載っているがHIDに関しては載っていない端末の方が多く、外付けキーボードなどいろいろ使えるので可能なら全端末に載せて欲しいというプロファイルの1つです。

ドコモさんの端末はhttp://www.nttdocomo.co.jp/service/func_tool/bluetooth/compatible_model/に情報があります。公式情報がこのように一覧になってくれているのはとてもうれしいです。(それを気付かずに各商品ページやwikipediaから情報を拾い集めてました(涙))

もし↓の表とドコモさん公式に食い違いがある場合には上を参考にしてください。

auに関しては以下の通り。

Softbank端末についてはこれから調べるところです。