Make WordPress Core

Ticket #24248: 24248.3.diff

File 24248.3.diff, 2.8 KB (added by MikeHansenMe, 8 years ago)
  • src/wp-includes/post.php

     
    30393039                'context' => '',
    30403040        );
    30413041
    3042         $postarr = wp_parse_args($postarr, $defaults);
     3042        if ( ! empty( $postarr['guid'] ) ) {
     3043                $guid = esc_url_raw( $postarr['guid'] );
     3044        }
    30433045
     3046        $postarr = wp_parse_args( $postarr, $defaults );
     3047
    30443048        unset( $postarr[ 'filter' ] );
    30453049
    30463050        $postarr = sanitize_post($postarr, 'db');
     
    30483052        // Are we updating or creating?
    30493053        $post_ID = 0;
    30503054        $update = false;
    3051         $guid = $postarr['guid'];
    30523055
    30533056        if ( ! empty( $postarr['ID'] ) ) {
    30543057                $update = true;
     
    30633066                        return 0;
    30643067                }
    30653068
    3066                 $guid = get_post_field( 'guid', $post_ID );
    3067                 $previous_status = get_post_field('post_status', $post_ID );
     3069                $guid = get_post_field( 'guid', $post_ID, 'raw' );
     3070                $previous_status = get_post_field( 'post_status', $post_ID, 'raw' );
    30683071        } else {
    30693072                $previous_status = 'new';
    30703073        }
     
    31493152        } else {
    31503153                // On updates, we need to check to see if it's using the old, fixed sanitization context.
    31513154                $check_name = sanitize_title( $post_name, '', 'old-save' );
    3152                 if ( $update && strtolower( urlencode( $post_name ) ) == $check_name && get_post_field( 'post_name', $post_ID ) == $check_name ) {
     3155                if ( $update && strtolower( urlencode( $post_name ) ) == $check_name && get_post_field( 'post_name', $post_ID, 'raw' ) == $check_name ) {
    31533156                        $post_name = $check_name;
    31543157                } else { // new post, or slug has changed.
    3155                         $post_name = sanitize_title($post_name);
     3158                        $post_name = sanitize_title( $post_name );
    31563159                }
    31573160        }
    31583161
     
    34103413                }
    34113414        }
    34123415
    3413         $current_guid = get_post_field( 'guid', $post_ID );
     3416        $current_guid = get_post_field( 'guid', $post_ID, 'raw' );
    34143417
    34153418        // Set GUID.
    34163419        if ( ! $update && '' == $current_guid ) {
  • tests/phpunit/tests/post.php

     
    12581258                $this->assertEquals( 0, get_post( $page_id )->post_parent );
    12591259        }
    12601260
     1261        /**
     1262         * Tests 'guid' not properly escaped
     1263         * @ticket 24248
     1264         */
     1265        function test_wp_guid_escaped_properly() {
     1266                $guid = 'http://example.org/?p=77&test=blah';
     1267                //Insert new post with guid
     1268                $id = wp_insert_post( array(
     1269                        'post_author' => $this->author_id,
     1270                        'post_status' => 'new',
     1271                        'post_content' => rand_str(),
     1272                        'post_title' => rand_str(),
     1273                        'guid' => $guid,
     1274                ) );
     1275                $post = get_post( $id );
     1276
     1277                $this->assertEquals( $guid, $post->guid );
     1278
     1279                //Update post
     1280                $id = wp_update_post( array(
     1281                        'ID' => $id,
     1282                        'post_status' => 'publish',
     1283                        'post_content' => rand_str(),
     1284                        'post_title' => rand_str(),
     1285                ) );
     1286                $post = get_post( $id );
     1287
     1288                $this->assertEquals( $guid, $post->guid );
     1289        }
    12611290}