SECURITY: Do not allow undeleting a revdel'd file if its top file
authorBrian Wolff <bawolff+wn@gmail.com>
Mon, 18 Apr 2016 16:45:56 +0000 (12:45 -0400)
committerChad <chadh@wikimedia.org>
Tue, 23 Aug 2016 02:03:56 +0000 (02:03 +0000)
This prevents admins being able to view suppressed files, by simply
deleting them, and then undeleting only the file revision that they
want to view.

This dates back to r43288. Unclear if it was intentional.

Bug: T132926
Change-Id: Ib767de853a37099305db20529378fa756ee1bdfe

includes/filerepo/file/LocalFile.php

index 91d628c..7e6e651 100644 (file)
@@ -2596,8 +2596,9 @@ class LocalFileRestoreBatch {
 
                                // The live (current) version cannot be hidden!
                                if ( !$this->unsuppress && $row->fa_deleted ) {
-                                       $storeBatch[] = [ $deletedUrl, 'public', $destRel ];
-                                       $this->cleanupBatch[] = $row->fa_storage_key;
+                                       $status->fatal( 'undeleterevdel' );
+                                       $this->file->unlock();
+                                       return $status;
                                }
                        } else {
                                $archiveName = $row->fa_archive_name;