Skip to:
Content

bbPress.org

Ticket #2496: 2496.patch

File 2496.patch, 4.9 KB (added by johnjamesjacoby, 5 years ago)

Patched against trunk

  • includes/admin/functions.php

     
    138138}
    139139
    140140/**
     141 * Sanitize permalink slugs when saving the settings page.
     142 *
     143 * @since bbPress (r5364)
     144 *
     145 * @param string $slug
     146 * @return string
     147 */
     148function bbp_sanitize_slug( $slug = '' ) {
     149
     150        // Don't allow multiple slashes in a row
     151        $value = preg_replace( '#/+#', '/', str_replace( '#', '', $slug ) );
     152
     153        // Strip out unsafe or unusable chars
     154        $value = esc_url_raw( $value );
     155
     156        // esc_url_raw() adds a scheme via esc_url(), so let's remove it
     157        $value = str_replace( 'http://', '', $value );
     158
     159        // Trim off first and last slashes.
     160        //
     161        // We already prevent double slashing elsewhere, but let's prevent
     162        // accidental poisoning of options values where we can.
     163        $value = ltrim( $value, '/' );
     164        $value = rtrim( $value, '/' );
     165
     166        // Filter the result and return
     167        return apply_filters( 'bbp_sanitize_slug', $value, $slug );
     168}
     169
     170/**
    141171 * Uninstall all bbPress options and capabilities from a specific site.
    142172 *
    143173 * @since bbPress (r3765)
  • includes/admin/settings.php

     
    263263                        '_bbp_root_slug' => array(
    264264                                'title'             => __( 'Forum Root', 'bbpress' ),
    265265                                'callback'          => 'bbp_admin_setting_callback_root_slug',
    266                                 'sanitize_callback' => 'esc_sql',
     266                                'sanitize_callback' => 'bbp_sanitize_slug',
    267267                                'args'              => array()
    268268                        ),
    269269
     
    292292                        '_bbp_forum_slug' => array(
    293293                                'title'             => __( 'Forum', 'bbpress' ),
    294294                                'callback'          => 'bbp_admin_setting_callback_forum_slug',
    295                                 'sanitize_callback' => 'sanitize_title',
     295                                'sanitize_callback' => 'bbp_sanitize_slug',
    296296                                'args'              => array()
    297297                        ),
    298298
     
    300300                        '_bbp_topic_slug' => array(
    301301                                'title'             => __( 'Topic', 'bbpress' ),
    302302                                'callback'          => 'bbp_admin_setting_callback_topic_slug',
    303                                 'sanitize_callback' => 'sanitize_title',
     303                                'sanitize_callback' => 'bbp_sanitize_slug',
    304304                                'args'              => array()
    305305                        ),
    306306
     
    308308                        '_bbp_topic_tag_slug' => array(
    309309                                'title'             => __( 'Topic Tag', 'bbpress' ),
    310310                                'callback'          => 'bbp_admin_setting_callback_topic_tag_slug',
    311                                 'sanitize_callback' => 'sanitize_title',
     311                                'sanitize_callback' => 'bbp_sanitize_slug',
    312312                                'args'              => array()
    313313                        ),
    314314
     
    316316                        '_bbp_view_slug' => array(
    317317                                'title'             => __( 'Topic View', 'bbpress' ),
    318318                                'callback'          => 'bbp_admin_setting_callback_view_slug',
    319                                 'sanitize_callback' => 'sanitize_title',
     319                                'sanitize_callback' => 'bbp_sanitize_slug',
    320320                                'args'              => array()
    321321                        ),
    322322
     
    324324                        '_bbp_reply_slug' => array(
    325325                                'title'             => __( 'Reply', 'bbpress' ),
    326326                                'callback'          => 'bbp_admin_setting_callback_reply_slug',
    327                                 'sanitize_callback' => 'sanitize_title',
     327                                'sanitize_callback' => 'bbp_sanitize_slug',
    328328                                'args'              => array()
    329329                        ),
    330330
     
    332332                        '_bbp_search_slug' => array(
    333333                                'title'             => __( 'Search', 'bbpress' ),
    334334                                'callback'          => 'bbp_admin_setting_callback_search_slug',
    335                                 'sanitize_callback' => 'sanitize_title',
     335                                'sanitize_callback' => 'bbp_sanitize_slug',
    336336                                'args'              => array()
    337337                        )
    338338                ),
     
    345345                        '_bbp_user_slug' => array(
    346346                                'title'             => __( 'User Base', 'bbpress' ),
    347347                                'callback'          => 'bbp_admin_setting_callback_user_slug',
    348                                 'sanitize_callback' => 'sanitize_title',
     348                                'sanitize_callback' => 'bbp_sanitize_slug',
    349349                                'args'              => array()
    350350                        ),
    351351
     
    353353                        '_bbp_topic_archive_slug' => array(
    354354                                'title'             => __( 'Topics Started', 'bbpress' ),
    355355                                'callback'          => 'bbp_admin_setting_callback_topic_archive_slug',
    356                                 'sanitize_callback' => 'esc_sql',
     356                                'sanitize_callback' => 'bbp_sanitize_slug',
    357357                                'args'              => array()
    358358                        ),
    359359
     
    361361                        '_bbp_reply_archive_slug' => array(
    362362                                'title'             => __( 'Replies Created', 'bbpress' ),
    363363                                'callback'          => 'bbp_admin_setting_callback_reply_archive_slug',
    364                                 'sanitize_callback' => 'esc_sql',
     364                                'sanitize_callback' => 'bbp_sanitize_slug',
    365365                                'args'              => array()
    366366                        ),
    367367
     
    369369                        '_bbp_user_favs_slug' => array(
    370370                                'title'             => __( 'Favorite Topics', 'bbpress' ),
    371371                                'callback'          => 'bbp_admin_setting_callback_user_favs_slug',
    372                                 'sanitize_callback' => 'esc_sql',
     372                                'sanitize_callback' => 'bbp_sanitize_slug',
    373373                                'args'              => array()
    374374                        ),
    375375
     
    377377                        '_bbp_user_subs_slug' => array(
    378378                                'title'             => __( 'Topic Subscriptions', 'bbpress' ),
    379379                                'callback'          => 'bbp_admin_setting_callback_user_subs_slug',
    380                                 'sanitize_callback' => 'esc_sql',
     380                                'sanitize_callback' => 'bbp_sanitize_slug',
    381381                                'args'              => array()
    382382                        )
    383383                ),