Skip to:
Content

BuddyPress.org

Changeset 14057


Ignore:
Timestamp:
10/22/2024 11:04:18 PM (9 months ago)
Author:
imath
Message:

Update stable tag to 14.2.1 and apply 14.2.1 security fix (trunk)

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/bp-core-avatars.php

    r13927 r14057  
    12191219 */
    12201220function bp_avatar_handle_capture( $data = '', $item_id = 0, $retval = 'boolean' ) {
    1221     $return = $retval;
     1221    $return  = $retval;
     1222    $item_id = (int) $item_id;
    12221223
    12231224    if ( empty( $data ) || empty( $item_id ) ) {
     
    13911392    }
    13921393
     1394    // Sanitize object id.
     1395    $item_id = (int) $avatar_data['item_id'];
     1396
    13931397    // Capability check.
    13941398    if ( ! bp_attachments_current_user_can( 'edit_avatar', $avatar_data ) ) {
     
    14041408        }
    14051409
    1406         $cropped_webcam_avatar = bp_avatar_handle_capture( $webcam_avatar, $avatar_data['item_id'], 'array' );
     1410        $cropped_webcam_avatar = bp_avatar_handle_capture( $webcam_avatar, $item_id, 'array' );
    14071411
    14081412        if ( ! $cropped_webcam_avatar ) {
     
    14191423                        array(
    14201424                            'object'  => $avatar_data['object'],
    1421                             'item_id' => $avatar_data['item_id'],
     1425                            'item_id' => $item_id,
    14221426                            'html'    => false,
    14231427                            'type'    => 'full',
     
    14261430                ),
    14271431                'feedback_code' => 2,
    1428                 'item_id'       => $avatar_data['item_id'],
     1432                'item_id'       => $item_id,
    14291433            );
    14301434
    14311435            /** This action is documented in wp-includes/deprecated.php */
    1432             do_action_deprecated( 'xprofile_avatar_uploaded', array( (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data ), '6.0.0', 'bp_members_avatar_uploaded' );
     1436            do_action_deprecated( 'xprofile_avatar_uploaded', array( $item_id, $avatar_data['type'], $avatar_data ), '6.0.0', 'bp_members_avatar_uploaded' );
    14331437
    14341438            /**
     
    14431447             * @param array  $cropped_webcam_avatar Array containing the full, thumb avatar and the timestamp.
    14441448             */
    1445             do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data, $cropped_webcam_avatar );
     1449            do_action( 'bp_members_avatar_uploaded', $item_id, $avatar_data['type'], $avatar_data, $cropped_webcam_avatar );
    14461450
    14471451            wp_send_json_success( $return );
     
    14641468    // Crop args.
    14651469    $r = array(
    1466         'item_id'       => $avatar_data['item_id'],
     1470        'item_id'       => $item_id,
    14671471        'object'        => $avatar_data['object'],
    14681472        'avatar_dir'    => $avatar_dir,
     
    14831487                    array(
    14841488                        'object'  => $avatar_data['object'],
    1485                         'item_id' => $avatar_data['item_id'],
     1489                        'item_id' => $item_id,
    14861490                        'html'    => false,
    14871491                        'type'    => 'full',
     
    14901494            ),
    14911495            'feedback_code' => 2,
    1492             'item_id'       => $avatar_data['item_id'],
     1496            'item_id'       => $item_id,
    14931497        );
    14941498
    14951499        if ( 'user' === $avatar_data['object'] ) {
    14961500            /** This action is documented in wp-includes/deprecated.php */
    1497             do_action_deprecated( 'xprofile_avatar_uploaded', array( (int) $avatar_data['item_id'], $avatar_data['type'], $r ), '6.0.0', 'bp_members_avatar_uploaded' );
     1501            do_action_deprecated( 'xprofile_avatar_uploaded', array( $item_id, $avatar_data['type'], $r ), '6.0.0', 'bp_members_avatar_uploaded' );
    14981502
    14991503            /** This action is documented in bp-core/bp-core-avatars.php */
    1500             do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r, $cropped_avatar );
     1504            do_action( 'bp_members_avatar_uploaded', $item_id, $avatar_data['type'], $r, $cropped_avatar );
    15011505        } elseif ( 'group' === $avatar_data['object'] ) {
    15021506            /** This action is documented in bp-groups/bp-groups-screens.php */
    1503             do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r, $cropped_avatar );
     1507            do_action( 'groups_avatar_uploaded', $item_id, $avatar_data['type'], $r, $cropped_avatar );
    15041508        }
    15051509
  • trunk/src/readme.txt

    r14020 r14057  
    88Requires at least: 6.4
    99Tested up to:      6.6
    10 Stable tag:        14.1.0
     10Stable tag:        14.2.1
    1111
    1212Get together safely, in your own way, in WordPress.
     
    131131== Upgrade Notice ==
    132132
     133= 14.2.1 =
     134See: https://codex.buddypress.org/releases/version-14-2-1/
     135
    133136= 14.1.0 =
    134137See: https://codex.buddypress.org/releases/version-14-1-0/
     
    203206== Changelog ==
    204207
     208= 14.2.1 =
     209See: https://codex.buddypress.org/releases/version-14-2-1/
     210
    205211= 14.1.0 =
    206212See: https://codex.buddypress.org/releases/version-14-1-0/
  • trunk/tests/phpunit/testcases/core/avatars.php

    r13980 r14057  
    88    protected $allowed_image_types = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png', 'webp' );
    99    protected $allowed_image_mimes = array( 'image/jpeg', 'image/jpeg', 'image/jpeg', 'image/gif', 'image/png', 'image/webp' );
     10    protected $capture = array();
    1011
    1112    private function clean_existing_avatars( $type = 'user' ) {
     
    420421        $this->assertFalse( is_dir( $avatar_dir1 ) );
    421422    }
     423
     424    public function set_capture( $return, $data ) {
     425        $this->capture = $data;
     426        return false;
     427    }
     428
     429    /**
     430     * @group bp_avatar_handle_capture
     431     */
     432    public function test_bp_avatar_handle_capture() {
     433        $u = self::factory()->user->create();
     434        $data = 'hello world';
     435
     436        add_filter( 'bp_core_pre_avatar_handle_crop', array( $this, 'set_capture' ), 10, 2 );
     437
     438        bp_avatar_handle_capture( $data, $u . '/../../../../../../foobar', 'array' );
     439
     440        remove_filter( 'bp_core_pre_avatar_handle_crop', array( $this, 'set_capture' ), 10, 2 );
     441
     442        $expected = '/avatars/' . $u . '/webcam-capture-' . $u . '.png';
     443
     444        $this->assertEquals( $expected, $this->capture['original_file'] );
     445    }
    422446}
Note: See TracChangeset for help on using the changeset viewer.