Page MenuHomeFreeBSD

fusefs: handle evil servers that return illegal inode numbers
ClosedPublic

Authored by asomers on May 4 2022, 11:40 PM.
Tags
None
Referenced Files
F151965240: D35128.id105907.diff
Sat, Apr 11, 7:57 PM
F151887594: D35128.id.diff
Sat, Apr 11, 9:02 AM
F151847249: D35128.id.diff
Sat, Apr 11, 1:57 AM
Unknown Object (File)
Sun, Apr 5, 11:55 AM
Unknown Object (File)
Sat, Apr 4, 2:05 AM
Unknown Object (File)
Mon, Mar 23, 4:12 PM
Unknown Object (File)
Mon, Mar 23, 12:48 PM
Unknown Object (File)
Fri, Mar 20, 6:16 PM
Subscribers

Details

Summary

fusefs: handle evil servers that return illegal inode numbers

  • If during FUSE_CREATE, FUSE_MKDIR, etc the server returns the same inode number for the new file as for its parent directory, reject it. Previously this would triggers a recurse-on-non-recursive lock panic.
  • If during FUSE_LINK the server returns a different inode number for the new name as for the old one, reject it. Obviously, that can't be a hard link.
  • If during FUSE_LOOKUP the server returns the same inode number for the new file as for its parent directory, reject it. Nothing good can come of this.

PR: 263662
Reported by: Robert Morris <rtm@lcs.mit.edu>
MFC after: 2 weeks

Test Plan

tests added

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable