Make WordPress Core

Ticket #13905: 13905.4.diff

File 13905.4.diff, 2.9 KB (added by ocean90, 9 years ago)
  • src/wp-includes/capabilities.php

     
    11441144        case 'delete_post':
    11451145        case 'delete_page':
    11461146                $post = get_post( $args[0] );
     1147                if ( ! $post ) {
     1148                        $caps[] = 'do_not_allow';
     1149                        break;
     1150                }
    11471151
    11481152                if ( 'revision' == $post->post_type ) {
    11491153                        $post = get_post( $post->post_parent );
     1154                        if ( ! $post ) {
     1155                                $caps[] = 'do_not_allow';
     1156                                break;
     1157                        }
    11501158                }
    11511159
    11521160                $post_type = get_post_type_object( $post->post_type );
     
    11881196        case 'edit_post':
    11891197        case 'edit_page':
    11901198                $post = get_post( $args[0] );
    1191                 if ( empty( $post ) ) {
     1199                if ( ! $post ) {
    11921200                        $caps[] = 'do_not_allow';
    11931201                        break;
    11941202                }
    11951203
    11961204                if ( 'revision' == $post->post_type ) {
    11971205                        $post = get_post( $post->post_parent );
     1206                        if ( ! $post ) {
     1207                                $caps[] = 'do_not_allow';
     1208                                break;
     1209                        }
    11981210                }
    11991211
    12001212                $post_type = get_post_type_object( $post->post_type );
     
    12341246        case 'read_post':
    12351247        case 'read_page':
    12361248                $post = get_post( $args[0] );
     1249                if ( ! $post ) {
     1250                        $caps[] = 'do_not_allow';
     1251                        break;
     1252                }
    12371253
    12381254                if ( 'revision' == $post->post_type ) {
    12391255                        $post = get_post( $post->post_parent );
     1256                        if ( ! $post ) {
     1257                                $caps[] = 'do_not_allow';
     1258                                break;
     1259                        }
    12401260                }
    12411261
    12421262                $post_type = get_post_type_object( $post->post_type );
     
    12651285                break;
    12661286        case 'publish_post':
    12671287                $post = get_post( $args[0] );
     1288                if ( ! $post ) {
     1289                        $caps[] = 'do_not_allow';
     1290                        break;
     1291                }
     1292
    12681293                $post_type = get_post_type_object( $post->post_type );
    12691294
    12701295                $caps[] = $post_type->cap->publish_posts;
     
    12731298        case 'delete_post_meta':
    12741299        case 'add_post_meta':
    12751300                $post = get_post( $args[0] );
     1301                if ( ! $post ) {
     1302                        $caps[] = 'do_not_allow';
     1303                        break;
     1304                }
     1305
    12761306                $caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
    12771307
    12781308                $meta_key = isset( $args[ 1 ] ) ? $args[ 1 ] : false;
     
    13021332                break;
    13031333        case 'edit_comment':
    13041334                $comment = get_comment( $args[0] );
    1305                 if ( empty( $comment ) )
     1335                if ( ! $comment ) {
     1336                        $caps[] = 'do_not_allow';
    13061337                        break;
     1338                }
     1339
    13071340                $post = get_post( $comment->comment_post_ID );
     1341                if ( ! $post ) {
     1342                        $caps[] = 'do_not_allow';
     1343                        break;
     1344                }
     1345
    13081346                $caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
    13091347                break;
    13101348        case 'unfiltered_upload':
  • 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(