Changeset 931

Show
Ignore:
Timestamp:
04/08/07 17:14:20 (1 year ago)
Author:
Neal
Message:

Added stricter permissions checks for actions in moderate.php.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/upload/moderate.php

    r198 r931  
    100100 
    101101                        if (preg_match('/[^0-9,]/', $posts)) 
     102                                message($lang_common['Bad request']); 
     103 
     104                        // Verify that the post IDs are valid 
     105                        $result = $db->query('SELECT 1 FROM '.$db->prefix.'posts WHERE id IN('.$posts.') AND topic_id='.$tid) or error('Unable to check posts', __FILE__, __LINE__, $db->error()); 
     106 
     107                        if ($db->num_rows($result) != substr_count($posts, ',') + 1) 
    102108                                message($lang_common['Bad request']); 
    103109 
     
    290296                        message($lang_common['Bad request']); 
    291297 
     298                // Verify that the topic IDs are valid 
     299                $result = $db->query('SELECT 1 FROM '.$db->prefix.'topics WHERE id IN('.implode(',',$topics).') AND forum_id='.$fid) or error('Unable to check topics', __FILE__, __LINE__, $db->error()); 
     300 
     301                if ($db->num_rows($result) != count($topics)) 
     302                        message($lang_common['Bad request']); 
     303 
    292304                // Delete any redirect topics if there are any (only if we moved/copied the topic back to where it where it was once moved from) 
    293305                $db->query('DELETE FROM '.$db->prefix.'topics WHERE forum_id='.$move_to_forum.' AND moved_to IN('.implode(',',$topics).')') or error('Unable to delete redirect topics', __FILE__, __LINE__, $db->error()); 
     
    405417 
    406418                require PUN_ROOT.'include/search_idx.php'; 
     419 
     420                // Verify that the topic IDs are valid 
     421                $result = $db->query('SELECT 1 FROM '.$db->prefix.'topics WHERE id IN('.$topics.') AND forum_id='.$fid) or error('Unable to check topics', __FILE__, __LINE__, $db->error()); 
     422 
     423                if ($db->num_rows($result) != substr_count($topics, ',') + 1) 
     424                        message($lang_common['Bad request']); 
    407425 
    408426                // Delete the topics and any redirect topics 
     
    473491                        message($lang_misc['No topics selected']); 
    474492 
    475                 $db->query('UPDATE '.$db->prefix.'topics SET closed='.$action.' WHERE id IN('.implode(',', $topics).')') or error('Unable to close topics', __FILE__, __LINE__, $db->error()); 
     493                $db->query('UPDATE '.$db->prefix.'topics SET closed='.$action.' WHERE id IN('.implode(',', $topics).') AND forum_id='.$fid) or error('Unable to close topics', __FILE__, __LINE__, $db->error()); 
    476494 
    477495                $redirect_msg = ($action) ? $lang_misc['Close topics redirect'] : $lang_misc['Open topics redirect']; 
     
    487505                        message($lang_common['Bad request']); 
    488506 
    489                 $db->query('UPDATE '.$db->prefix.'topics SET closed='.$action.' WHERE id='.$topic_id) or error('Unable to close topic', __FILE__, __LINE__, $db->error()); 
     507                $db->query('UPDATE '.$db->prefix.'topics SET closed='.$action.' WHERE id='.$topic_id.' AND forum_id='.$fid) or error('Unable to close topic', __FILE__, __LINE__, $db->error()); 
    490508 
    491509                $redirect_msg = ($action) ? $lang_misc['Close topic redirect'] : $lang_misc['Open topic redirect']; 
     
    504522                message($lang_common['Bad request']); 
    505523 
    506         $db->query('UPDATE '.$db->prefix.'topics SET sticky=\'1\' WHERE id='.$stick) or error('Unable to stick topic', __FILE__, __LINE__, $db->error()); 
     524        $db->query('UPDATE '.$db->prefix.'topics SET sticky=\'1\' WHERE id='.$stick.' AND forum_id='.$fid) or error('Unable to stick topic', __FILE__, __LINE__, $db->error()); 
    507525 
    508526        redirect('viewtopic.php?id='.$stick, $lang_misc['Stick topic redirect']); 
     
    519537                message($lang_common['Bad request']); 
    520538 
    521         $db->query('UPDATE '.$db->prefix.'topics SET sticky=\'0\' WHERE id='.$unstick) or error('Unable to unstick topic', __FILE__, __LINE__, $db->error()); 
     539        $db->query('UPDATE '.$db->prefix.'topics SET sticky=\'0\' WHERE id='.$unstick.' AND forum_id='.$fid) or error('Unable to unstick topic', __FILE__, __LINE__, $db->error()); 
    522540 
    523541        redirect('viewtopic.php?id='.$unstick, $lang_misc['Unstick topic redirect']);