<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Nov 29, 2022 at 7:09 PM Richard Palethorpe <<a href="mailto:rpalethorpe@suse.de" target="_blank">rpalethorpe@suse.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>> writes:<br>
<br>
> On Thu, Nov 24, 2022 at 7:42 PM Avinesh Kumar <<a href="mailto:akumar@suse.de" target="_blank">akumar@suse.de</a>> wrote:<br>
><br>
>  Also I've removed the TINFO statements, I'm not sure if only<br>
>  printing the data in logs is helpful in anyway.<br>
><br>
> Removing the printing is OK, but I am just wondering that<br>
> can we find a way to check if the returned value in 'buf' is<br>
> indeed correct?<br>
><br>
> As you can see the ‘struct statvfs‘ includes many fs key<br>
> values that we need to trust when using them.<br>
><br>
> struct statvfs {<br>
>         unsigned long  f_bsize;    /* Filesystem block size */<br>
>         unsigned long  f_frsize;   /* Fragment size */<br>
>         fsblkcnt_t     f_blocks;   /* Size of fs in f_frsize units */<br>
>         fsblkcnt_t     f_bfree;    /* Number of free blocks */<br>
>         fsblkcnt_t     f_bavail;   /* Number of free blocks for<br>
>                                              unprivileged users */<br>
>         fsfilcnt_t     f_files;    /* Number of inodes */<br>
>         fsfilcnt_t     f_ffree;    /* Number of free inodes */<br>
>         fsfilcnt_t     f_favail;   /* Number of free inodes for<br>
>                                              unprivileged users */<br>
>         unsigned long  f_fsid;     /* Filesystem ID */<br>
>         unsigned long  f_flag;     /* Mount flags */<br>
>         unsigned long  f_namemax;  /* Maximum filename length */<br>
>  };<br>
<br>
I suppose previously printing the values at least accessed the memory.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Sounds reasonable.</div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Actually validating the values could be a separate patch though.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">+1 Absolutely.</div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
We (probably) know that maximum filename should be less than 255 chars<br>
(for e.g.), but I think there is a good chance that trying to validate<br>
this will result in false positives and stuff we might want to revert.<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Maybe we can create a concrete size of the device and mount</div><div class="gmail_default" style="font-size:small">it with a designated FS (e.g. ext4), then extracting the known FS</div><div class="gmail_default" style="font-size:small">data into `struct statvfs` and validating them.</div></div><div><br></div><div><div class="gmail_default" style="font-size:small">Does this make sense?</div><br></div><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>