Make WordPress Core

Ticket #24248: 24248.diff

File 24248.diff, 3.1 KB (added by MikeHansenMe, 9 years ago)
  • src/wp-includes/post-functions.php

     
    28942894                'context' => '',
    28952895        );
    28962896
    2897         $postarr = wp_parse_args($postarr, $defaults);
     2897        if ( ! empty( $postarr['guid'] ) ) {
     2898                $guid = esc_url_raw( $postarr['guid'] );
     2899        }
    28982900
     2901        $postarr = wp_parse_args( $postarr, $defaults );
     2902
    28992903        unset( $postarr[ 'filter' ] );
    29002904
    29012905        $postarr = sanitize_post($postarr, 'db');
     
    29032907        // Are we updating or creating?
    29042908        $post_ID = 0;
    29052909        $update = false;
    2906         $guid = $postarr['guid'];
    29072910
    29082911        if ( ! empty( $postarr['ID'] ) ) {
    29092912                $update = true;
     
    29182921                        return 0;
    29192922                }
    29202923
    2921                 $guid = get_post_field( 'guid', $post_ID );
    2922                 $previous_status = get_post_field('post_status', $post_ID );
     2924                $guid = get_post_field( 'guid', $post_ID, 'raw' );
     2925                $previous_status = get_post_field( 'post_status', $post_ID, 'raw' );
    29232926        } else {
    29242927                $previous_status = 'new';
    29252928        }
     
    30013004        } else {
    30023005                // On updates, we need to check to see if it's using the old, fixed sanitization context.
    30033006                $check_name = sanitize_title( $post_name, '', 'old-save' );
    3004                 if ( $update && strtolower( urlencode( $post_name ) ) == $check_name && get_post_field( 'post_name', $post_ID ) == $check_name ) {
     3007                if ( $update && strtolower( urlencode( $post_name ) ) == $check_name && get_post_field( 'post_name', $post_ID, 'raw' ) == $check_name ) {
    30053008                        $post_name = $check_name;
    30063009                } else { // new post, or slug has changed.
    3007                         $post_name = sanitize_title($post_name);
     3010                        $post_name = sanitize_title( $post_name );
    30083011                }
    30093012        }
    30103013
     
    32393242                }
    32403243        }
    32413244
    3242         $current_guid = get_post_field( 'guid', $post_ID );
     3245        $current_guid = get_post_field( 'guid', $post_ID, 'raw' );
    32433246
    32443247        // Set GUID.
    32453248        if ( ! $update && '' == $current_guid ) {
  • tests/phpunit/tests/post.php

     
    12341234                $this->assertEquals(get_date_from_gmt($post['post_date_gmt']), $out->post_date);
    12351235                $this->assertEquals($post['post_date_gmt'], $out->post_date_gmt);
    12361236        }
     1237
     1238
     1239    /**
     1240     * Tests 'guid' not properly escaped
     1241     * @ticket 24248
     1242     */
     1243    function test_wp_guid_escaped_properly() {
     1244
     1245        $guid = 'http://example.org/?p=77&test=blah';
     1246
     1247        //Insert new post with guid
     1248        $id = wp_insert_post( array(
     1249            'post_author' => $this->author_id,
     1250            'post_status' => 'new',
     1251            'post_content' => rand_str(),
     1252            'post_title' => rand_str(),
     1253            'guid' => $guid,
     1254        ) );
     1255        $post = get_post( $id );
     1256
     1257        $this->assertEquals( $guid, $post->guid );
     1258
     1259        //Update post
     1260        $id = wp_update_post( array(
     1261            'ID' => $id,
     1262            'post_status' => 'publish',
     1263            'post_content' => rand_str(),
     1264            'post_title' => rand_str(),
     1265        ) );
     1266        $post = get_post( $id );
     1267
     1268        $this->assertEquals( $guid, $post->guid );
     1269    }
     1270
    12371271}