Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
09/09/2017 12:43:21 AM (8 years ago)
Author:
johnjamesjacoby
Message:

General: ensure values are un/serialized as intended.

This change provides additional hardening around how some serialized data is manipulated while it's being passed around the application. (Some values were inconsistently or needlessly handled.)

Trunk, for 3.0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/bp-xprofile-filters.php

    r11447 r11692  
    169169    }
    170170
    171     // Value might be serialized.
     171    // Force reserialization if serialized (avoids mutation, retains integrity)
     172    if ( is_serialized( $field_value ) && ( false === $reserialize ) ) {
     173        $reserialize = true;
     174    }
     175
     176    // Value might be a serialized array of options.
    172177    $field_value = maybe_unserialize( $field_value );
    173178
    174     // Filter single value.
    175     if ( !is_array( $field_value ) ) {
     179    // Sanitize single field value.
     180    if ( ! is_array( $field_value ) ) {
    176181        $kses_field_value     = xprofile_filter_kses( $field_value, $data_obj );
    177182        $filtered_field_value = wp_rel_nofollow( force_balance_tags( $kses_field_value ) );
     
    188193        $filtered_field_value = apply_filters( 'xprofile_filtered_data_value_before_save', $filtered_field_value, $field_value, $data_obj );
    189194
    190     // Filter each array item independently.
     195    // Sanitize multiple individual option values.
    191196    } else {
    192197        $filtered_values = array();
    193198        foreach ( (array) $field_value as $value ) {
    194             $kses_field_value       = xprofile_filter_kses( $value, $data_obj );
    195             $filtered_value     = wp_rel_nofollow( force_balance_tags( $kses_field_value ) );
     199            $kses_field_value = xprofile_filter_kses( $value, $data_obj );
     200            $filtered_value   = wp_rel_nofollow( force_balance_tags( $kses_field_value ) );
    196201
    197202            /** This filter is documented in bp-xprofile/bp-xprofile-filters.php */
    198203            $filtered_values[] = apply_filters( 'xprofile_filtered_data_value_before_save', $filtered_value, $value, $data_obj );
    199 
    200204        }
    201205
Note: See TracChangeset for help on using the changeset viewer.