Make WordPress Core

Changeset 57318


Ignore:
Timestamp:
01/19/2024 11:58:08 PM (14 months ago)
Author:
peterwilsoncc
Message:

Media: Revert [57310].

This commit reintroduced a minor data exposure issue.

Props swissspidy.
See #59866, #57913.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/canonical.php

    r57310 r57318  
    551551
    552552    if ( is_attachment() && ! get_option( 'wp_attachment_pages_enabled' ) ) {
    553         $attachment_id        = get_query_var( 'attachment_id' );
    554         $attachment_post      = get_post( $attachment_id );
    555         $attachment_parent_id = $attachment_post ? $attachment_post->post_parent : 0;
    556 
    557         /*
    558          * If an attachment is attached to a post, it inherits the parent post's status. Fetch the
    559          * parent post to check its status later.
    560          */
    561         if ( $attachment_parent_id ) {
    562             $redirect_obj = get_post( $attachment_parent_id );
    563         }
    564         $redirect_url = wp_get_attachment_url( $attachment_id );
    565 
    566         $is_attachment_redirect = true;
     553        $attachment_id = get_query_var( 'attachment_id' );
     554
     555        if ( current_user_can( 'read_post', $attachment_id ) ) {
     556            $redirect_url = wp_get_attachment_url( $attachment_id );
     557
     558            $is_attachment_redirect = true;
     559        }
    567560    }
    568561
  • trunk/tests/phpunit/tests/canonical.php

    r57310 r57318  
    408408
    409409    /**
    410      * Test canonical redirects for attachment pages when the option is disabled.
    411      *
    412410     * @ticket 57913
    413      * @ticket 59866
    414      *
    415      * @dataProvider data_canonical_attachment_page_redirect_with_option_disabled
    416      */
    417     public function test_canonical_attachment_page_redirect_with_option_disabled( $expected, $user = null, $parent_post_status = '' ) {
     411     */
     412    public function test_canonical_attachment_page_redirect_with_option_disabled() {
    418413        add_filter( 'pre_option_wp_attachment_pages_enabled', '__return_false' );
    419 
    420         if ( '' !== $parent_post_status ) {
    421             $parent_post_id = self::factory()->post->create(
    422                 array(
    423                     'post_status' => $parent_post_status,
    424                 )
    425             );
    426         } else {
    427             $parent_post_id = 0;
    428         }
    429414
    430415        $filename = DIR_TESTDATA . '/images/test-image.jpg';
     
    432417        $upload   = wp_upload_bits( wp_basename( $filename ), null, $contents );
    433418
    434         $attachment_id   = $this->_make_attachment( $upload, $parent_post_id );
    435         $attachment_url  = wp_get_attachment_url( $attachment_id );
     419        $attachment_id   = $this->_make_attachment( $upload );
    436420        $attachment_page = get_permalink( $attachment_id );
    437421
    438         // Set as anonymous/logged out user.
    439         if ( null !== $user ) {
    440             wp_set_current_user( $user );
    441         }
    442 
    443422        $this->go_to( $attachment_page );
    444423
    445         $url = redirect_canonical( $attachment_page, false );
    446         if ( is_string( $expected ) ) {
    447             $expected = str_replace( '%%attachment_url%%', $attachment_url, $expected );
    448         }
     424        $url      = redirect_canonical( $attachment_page, false );
     425        $expected = wp_get_attachment_url( $attachment_id );
    449426
    450427        $this->assertSame( $expected, $url );
    451428    }
    452 
    453     /**
    454      * Data provider for test_canonical_attachment_page_redirect_with_option_disabled().
    455      *
    456      * @return array[]
    457      */
    458     public function data_canonical_attachment_page_redirect_with_option_disabled() {
    459         return array(
    460             'logged out user, no parent'      => array(
    461                 '%%attachment_url%%',
    462                 0,
    463             ),
    464             'logged in user, no parent'       => array(
    465                 '%%attachment_url%%',
    466             ),
    467             'logged out user, private parent' => array(
    468                 null,
    469                 0,
    470                 'private',
    471             ),
    472             'logged in user, private parent'  => array(
    473                 '%%attachment_url%%',
    474                 null,
    475                 'private',
    476             ),
    477             'logged out user, public parent'  => array(
    478                 '%%attachment_url%%',
    479                 0,
    480                 'publish',
    481             ),
    482             'logged in user, public parent'   => array(
    483                 '%%attachment_url%%',
    484                 null,
    485                 'publish',
    486             ),
    487         );
    488     }
    489429}
Note: See TracChangeset for help on using the changeset viewer.