Re: FAT: Operating on broken FAT FS causes the write syscall to return negative number not equal to -1

From: Anatoly Trosinenko
Date: Sun Jul 15 2018 - 11:08:54 EST


Thank you!

> This patch returns better error (-EIO) for me.

This works for me likewise.

> (But note, the corrupted FS image doesn't guarantee POSIX behavior.)

Oops, I was just doing some testing and thought that correct behavior
for crafted FS is to return arbitrary valid error code (like -EIO) or
some arbitrary data, say, not larger than FS (not disclosing the
kernel memory, of course). Please excuse me if I was wrong. If fixing
this would slow down some hot code path, then I am not insisting on
returning valid errno. :)

Meanwhile, how should be considered such discrepancies with man pages
for invalid FS images: should it be considered low priority bug,
not-a-bug or feature request (diagnostics)?


Thanks
Anatoly

ÐÑ, 15 ÐÑÐ. 2018 Ð. Ð 17:30, Al Viro <viro@xxxxxxxxxxxxxxxxxx>:
>
> On Sun, Jul 15, 2018 at 11:20:06PM +0900, OGAWA Hirofumi wrote:
> > +static inline bool fat_valid_entry(struct msdos_sb_info *sbi, int entry)
> > +{
> > + if (entry < FAT_START_ENT || sbi->max_cluster <= entry)
> > + return false;
> > + return true;
> > +}
>
> Pet peeve: if (...) return false; return true; instead of return !....;
>
> In this case,
> return entry >= FAT_START_ENT && entry < sb->max_cluster;