Make WordPress Core

Ticket #13905: 13905.diff

File 13905.diff, 2.8 KB (added by wonderboymusic, 9 years ago)
  • src/wp-includes/capabilities-functions.php

     
    4747        case 'delete_post':
    4848        case 'delete_page':
    4949                $post = get_post( $args[0] );
     50                if ( ! $post ) {
     51                        $caps[] = 'do_not_allow';
     52                        break;
     53                }
    5054
    5155                if ( 'revision' == $post->post_type ) {
    5256                        $post = get_post( $post->post_parent );
     57                        if ( ! $post ) {
     58                                $caps[] = 'do_not_allow';
     59                                break;
     60                        }
    5361                }
    5462
    5563                $post_type = get_post_type_object( $post->post_type );
     
    97105        case 'edit_post':
    98106        case 'edit_page':
    99107                $post = get_post( $args[0] );
    100                 if ( empty( $post ) ) {
     108                if ( ! $post ) {
    101109                        $caps[] = 'do_not_allow';
    102110                        break;
    103111                }
     
    104112
    105113                if ( 'revision' == $post->post_type ) {
    106114                        $post = get_post( $post->post_parent );
     115                        if ( ! $post ) {
     116                                $caps[] = 'do_not_allow';
     117                                break;
     118                        }
    107119                }
    108120
    109121                $post_type = get_post_type_object( $post->post_type );
     
    149161        case 'read_post':
    150162        case 'read_page':
    151163                $post = get_post( $args[0] );
     164                if ( ! $post ) {
     165                        $caps[] = 'do_not_allow';
     166                        break;
     167                }
    152168
    153169                if ( 'revision' == $post->post_type ) {
    154170                        $post = get_post( $post->post_parent );
     171                        if ( ! $post ) {
     172                                $caps[] = 'do_not_allow';
     173                                break;
     174                        }
    155175                }
    156176
    157177                $post_type = get_post_type_object( $post->post_type );
     
    186206                break;
    187207        case 'publish_post':
    188208                $post = get_post( $args[0] );
     209                if ( ! $post ) {
     210                        $caps[] = 'do_not_allow';
     211                        break;
     212                }
     213
    189214                $post_type = get_post_type_object( $post->post_type );
    190215                if ( ! $post_type ) {
    191216                        /* translators: 1: post type, 2: capability name */
     
    200225        case 'delete_post_meta':
    201226        case 'add_post_meta':
    202227                $post = get_post( $args[0] );
     228                if ( ! $post ) {
     229                        $caps[] = 'do_not_allow';
     230                        break;
     231                }
     232
    203233                $caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
    204234
    205235                $meta_key = isset( $args[ 1 ] ) ? $args[ 1 ] : false;
     
    229259                break;
    230260        case 'edit_comment':
    231261                $comment = get_comment( $args[0] );
    232                 if ( empty( $comment ) )
     262                if ( ! $comment ) {
     263                        $caps[] = 'do_not_allow';
    233264                        break;
     265                }
     266
    234267                $post = get_post( $comment->comment_post_ID );
    235268
    236269                /*
  • tests/phpunit/tests/user/mapMetaCap.php

     
    3737                parent::tearDown();
    3838        }
    3939
     40        /**
     41         * @ticket 13905
     42         */
     43        function test_capability_type_post_with_invalid_id() {
     44                $this->assertEquals( array( 'do_not_allow' ),
     45                        map_meta_cap( 'edit_post', $this->user_id, $this->post_id + 1 ) );
     46        }
     47
    4048        function test_capability_type_post_with_no_extra_caps() {
    4149
    4250                register_post_type( $this->post_type, array(