FAT: Fixed some dirent pointer access issues.

* Fixed #9806 which Ingo had analyzed perfectly, but then forgot to
  fix it.
* Fixed CID 603015.
This commit is contained in:
Axel Dörfler 2014-05-22 15:56:11 +02:00
parent 549fcbf51a
commit e2e54a381b

View File

@ -82,14 +82,17 @@ _next_dirent_(struct diri *iter, struct _dirent_info_ *oinfo, char *filename,
iter->csi.sector, iter->current_index));
if (buffer[0] == 0) { // quit if at end of table
if (start_index != 0xffff) {
dprintf("lfn entry (%s) with no alias\n", filename);
*puni = 0;
dprintf("lfn entry (%s) with no alias\n", uni);
}
return ENOENT;
}
if (buffer[0] == 0xe5) { // skip erased entries
if (start_index != 0xffff) {
dprintf("lfn entry (%s) with intervening erased entries\n", filename);
*puni = 0;
dprintf("lfn entry (%s) with intervening erased entries\n",
uni);
start_index = 0xffff;
}
DPRINTF(2, ("entry erased, skipping...\n"));
@ -261,7 +264,8 @@ get_next_dirent(nspace *vol, vnode *dir, struct diri *iter, ino_t *vnid,
}
}
DPRINTF(2, ("get_next_dirent: found %s (vnid %Lx)\n", filename, *vnid));
DPRINTF(2, ("get_next_dirent: found %s (vnid %Lx)\n", filename,
vnid != NULL ? *vnid : NULL));
return B_NO_ERROR;
}