Skip to:
Content

bbPress.org


Ignore:
Timestamp:
07/04/2013 12:11:09 PM (13 years ago)
Author:
johnjamesjacoby
Message:

Introduce additional forum/topic ID validation when posting new topics and replies. Prevents empty/negative/non-existent post_parent. Fixes #2363.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/topics/functions.php

    r5002 r5009  
    189189    /** Topic Forum ***********************************************************/
    190190
    191     // Forum id was not passed
    192     if ( empty( $_POST['bbp_forum_id'] ) ) {
    193         bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID is missing.', 'bbpress' ) );
    194 
    195     // Forum id was passed
    196     } elseif ( is_numeric( $_POST['bbp_forum_id'] ) ) {
    197         $forum_id = (int) $_POST['bbp_forum_id'];
     191    // Error check the POST'ed topic id
     192    if ( isset( $_POST['bbp_forum_id'] ) ) {
     193
     194        // Empty Forum id was passed
     195        if ( empty( $_POST['bbp_forum_id'] ) ) {
     196            bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID is missing.', 'bbpress' ) );
     197
     198        // Forum id is not a number
     199        } elseif ( ! is_numeric( $_POST['bbp_forum_id'] ) ) {
     200            bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID must be a number.', 'bbpress' ) );
     201
     202        // Forum id might be valid
     203        } else {
     204
     205            // Get the forum id
     206            $posted_forum_id = intval( $_POST['bbp_forum_id'] );
     207
     208            // Forum id is empty
     209            if ( 0 === $posted_forum_id ) {
     210                bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID is missing.', 'bbpress' ) );
     211
     212            // Forum id is a negative number
     213            } elseif ( 0 > $posted_forum_id ) {
     214                bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID cannot be a negative number.', 'bbpress' ) );
     215
     216            // Forum does not exist
     217            } elseif ( ! get_post( $posted_forum_id ) ) {
     218                bbp_add_error( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum does not exist.', 'bbpress' ) );
     219
     220            // Use the POST'ed forum id
     221            } else {
     222                $forum_id = $posted_forum_id;
     223            }
     224        }
    198225    }
    199226
Note: See TracChangeset for help on using the changeset viewer.