激しく環境依存ぽいんで、アレですけれども。。
■検証環境
CentOS6.2 + FUSE 2.8.7
■現象
2GB超のファイルをlsしたりstatしたりするとオーバーフローっぽい値が表示される。
■修正内容(手抜き)
fuse.c(修正前)int value = Z_LVAL_PP(entry);
(修正後)long value = Z_LVAL_PP(entry);
※2個所あります。だいたい前者だけで大丈夫だと思いますが。
PHP_FUSE_API int php_fuse_getattr(const char * path, struct stat * st) 内
PHP_FUSE_API int php_fuse_statfs(const char * path, struct statfs * st) 内
いかにも対症療法ですが、正しくはどうすればいいんでしょうね。。
Z_LVAL_Pも同様のようですが、とりあえず動いたんで、これで…^^; スミマセン
あ、あと、これもかな。。違うかな。。
(修正前)st->st_size = (size_t)value;
(修正後)st->st_size = (off_t)value;
Z_LVAL_Pも同様のようですが、とりあえず動いたんで、これで…^^; スミマセン
あ、あと、これもかな。。違うかな。。
(修正前)st->st_size = (size_t)value;
(修正後)st->st_size = (off_t)value;
0 件のコメント:
コメントを投稿