Make WordPress Core

Ticket #3095: 3095b.diff

File 3095b.diff, 2.6 KB (added by mdawaffe, 18 years ago)

default

  • wp-admin/options.php

     
    1010if ( !current_user_can('manage_options') )
    1111        wp_die(__('Cheatin’ uh?'));
    1212
    13 function sanitize_option($option, $value) {
     13function sanitize_option($option, $value) { // Remember to call stripslashes!
    1414
    1515        switch ($option) {
    1616                case 'admin_email':
     17                        $value = stripslashes($value);
    1718                        $value = sanitize_email($value);
    1819                        break;
    1920
    2021                case 'default_post_edit_rows':
    2122                case 'mailserver_port':
    2223                case 'comment_max_links':
     24                        $value = stripslashes($value);
    2325                        $value = abs((int) $value);
    2426                        break;
    2527
    2628                case 'posts_per_page':
    2729                case 'posts_per_rss':
     30                        $value = stripslashes($value);
    2831                        $value = (int) $value;
    2932                        if ( empty($value) ) $value = 1;
    3033                        if ( $value < -1 ) $value = abs($value);
     
    3235
    3336                case 'default_ping_status':
    3437                case 'default_comment_status':
     38                        $value = stripslashes($value);
    3539                        // Options that if not there have 0 value but need to be something like "closed"
    3640                        if ( $value == '0' || $value == '')
    3741                                $value = 'closed';
     
    4044                case 'blogdescription':
    4145                case 'blogname':
    4246                        if (current_user_can('unfiltered_html') == false)
    43                                 $value = wp_filter_post_kses( $value );
     47                                $value = wp_filter_post_kses( $value ); // calls stripslashes then addslashes
     48                        $value = stripslashes($value);
    4449                        break;
    4550
    4651                case 'blog_charset':
    47                         $value = preg_replace('/[^a-zA-Z0-9_-]/', '', $value);
     52                        $value = preg_replace('/[^a-zA-Z0-9_-]/', '', $value); // strips slashes
    4853                        break;
    4954
    5055                case 'date_format':
     
    5560                case 'ping_sites':
    5661                case 'upload_path':
    5762                        $value = strip_tags($value);
    58                         $value = wp_filter_kses($value);
     63                        $value = wp_filter_kses($value); // calls stripslashes then addslashes
     64                        $value = stripslashes($value);
    5965                        break;
    6066
    6167                case 'gmt_offset':
    62                         $value = preg_replace('/[^0-9:.-]/', '', $value);
     68                        $value = preg_replace('/[^0-9:.-]/', '', $value); // strips slashes
    6369                        break;
    6470
    6571                case 'siteurl':
    6672                case 'home':
     73                        $value = stripslashes($value);
    6774                        $value = clean_url($value);
    6875                        break;
     76                default :
     77                        $value = stripslashes($value);
     78                        break;
    6979        }
    7080
    7181        return $value; 
     
    8999        if ($options) {
    90100                foreach ($options as $option) {
    91101                        $option = trim($option);
    92                         $value = trim(stripslashes($_POST[$option]));
    93                         $value = sanitize_option($option, $value);
     102                        $value = trim($_POST[$option]);
     103                        $value = sanitize_option($option, $value); // This does stripslashes on those that need it
    94104                        update_option($option, $value);
    95105                }
    96106        }