SQLite3.5.9 sqlite3_mprintfのバグ?

2010/04/30 | By KUMA | Filed in: 技術メモ.

Debian LennyのパッケージとなっているSQLite 3.5.9でstrftime関数とsqlite3_mprintfの組み合わせでどうもバグを踏んだっぽい。

↓な感じのコードを書いたら、再現。


char str[] = "SELECT strftime('%%Y-%%m-%%d 00:00:00', '%u', 'unixepoch', 'localtime');"
char *sql = sqlite3_mprintf(str, 1272628349);

そしたらこんなふうにsqlには文字列が展開されてた。

select strftime('%Y-No such file or directory--1076202408 00:00:00', '1272628349', 'unixepoch', 'localtime');

どうも%%のエスケープがうまく解釈出来ないようなので、strftimeを使用しない方法で回避した。

最新のSQLiteで治っているかは未確認。時間があったら調べる。


Tags: , ,

Comments are closed here.