NTFS-3G移植后在项目测试过程中发现的一些bug, 摘录了一些放在blog上.
a.读目录返回EIO, 是index allocation里面的文件名的index entry的长度正好快到这个allocation结束的时候, 判断有问题.
=== (+5,-2) src/kware/ufs/ntfs-3g/libntfs-3g/dir.c ===
@@ -1372,8 +1372,11 @@
dirent = (char*)dirent + ie->key.file_name.file_name_length + 1;//do not forget the ending \0
info++;
- do
+ do{
ie = (INDEX_ENTRY*)((u8*)ie + le16_to_cpu(ie->length));
+ if (ie->ie_flags & INDEX_ENTRY_END)
+ break;
+ }
while(last_index == ie->indexed_file || ie->key.file_name.file_name_type == FILE_NAME_DOS);
last_index = ie->indexed_file;
}
其实这样还有bug,应该是:
do{
ie = (INDEX_ENTRY*)