Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ooo.plを修正しました



臼田です

HEADとSTABLEのpl/util.plの仕様の違いの理由を探して
過去のメールを読んでいたところ
「Do NOT use system() (Re: namazu/filter committed by baba)」
http://www.namazu.org/ml/namazu-devel-ja/msg02586.html
から始まる一連の話題を見かけました。

気になったのでチェック用にtestスクリプトを作ってみました。
シェルプログラムは初めてなので動作に自信がなかったのですが、
自作のooo.plがひっかかりました。(ある意味予想通りなのですが)
他のフィルタと同じようにutil::systemcmd()を用いるスタイルに
修正しcommitしました。

ooo.plは2.0.xの他のモジュールで使っているスタイルのものも作って
stableにも近いうちにcommitしようと思っています。

------------------------------------------------------------
#! /bin/sh
#
# Test for avoid dangerous filename.
#  (filename include shell command) 
#
LOG=`pwd`/test-log
TARGET=`$srcdir/select-data`
echo '  *** starting ' $0 >>$LOG

if test ! -d idx21; then
    mkdir idx21
else
    rm -f idx21/NMZ.*
fi

TMPDATA=`pwd`/tmp-data

# Copy docments.
if test ! -d tmp-data; then
    mkdir tmp-data
else
    rm -rf tmp-data
    mkdir tmp-data
fi
cp -rp $TARGET tmp-data
if test -f unauthorizedfile; then
    rm unauthorizedfile
fi

_CWD=`pwd`
cd $TMPDATA
TARGETFILES=`ls`
for TARGETFILE in $TARGETFILES; do
   mv $TARGETFILE '`touch unauthorizedfile`'$TARGETFILE 
done;
cd $_CWD

# indexing dangerous named documents.
../scripts/mknmz -O idx21 $TMPDATA >> $LOG
test "$?" != "0" && exit 1  # error if not success

# Compare indexed docnum with hitnum 
docnum=`perl -lne 'print $1 if /^files (\d+)/' idx21/NMZ.status`
hitnum=`../src/namazu -c namazu ./idx21`
echo "docnum:" $docnum, "hitnum:" $hitnum >> $LOG

test $docnum -gt $hitnum && exit 1  # error if docnum > hitnum 

test -f unauthorizedfile && exit 1 # error if executed shell command. 
exit 0

---------
臼田幸生