Page MenuHomePhabricator

Remove PhabricatorFile::buildFromFileDataOrHash()
ClosedPublic

Authored by epriestley on Apr 4 2017, 9:32 PM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 18 2024, 11:48 AM
Unknown Object (File)
Feb 12 2024, 7:49 AM
Unknown Object (File)
Jan 23 2024, 3:57 PM
Unknown Object (File)
Jan 11 2024, 5:37 PM
Unknown Object (File)
Jan 6 2024, 2:58 AM
Unknown Object (File)
Jan 4 2024, 10:45 PM
Unknown Object (File)
Jan 2 2024, 4:02 PM
Unknown Object (File)
Dec 29 2023, 10:23 AM
Subscribers

Details

Summary

Ref T12464. This is a very old method which can return an existing file instead of creating a new one, if there's some existing file with the same content.

In the best case this is a bad idea. This being somewhat reasonable predates policies, temporary files, etc. Modern methods like newFromFileData() do this right: they share underlying data in storage, but not the actual File records.

Specifically, this is the case where we get into trouble:

  • I upload a private file with content "X".
  • You somehow generate a file with the same content by, say, viewing a raw diff in Differential.
  • If the diff had the same content, you get my file, but you don't have permission to see it or whatever so everything breaks and is terrible.

Just get rid of this.

Test Plan
  • Generated an SSH key.
  • Viewed a raw diff in Differential.
  • (Did not test Phragment.)

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable