<?php
// PukiWiki - Yet another WikiWikiWeb clone.
// edit.inc.php
-// Copyright 2001-2019 PukiWiki Development Team
+// Copyright 2001-2022 PukiWiki Development Team
// License: GPL v2 or (at your option) any later version
//
// Edit plugin (cmd=edit)
} else if (isset($vars['cancel'])) {
return plugin_edit_cancel();
}
-
+ ensure_valid_page_name_length($page);
$postdata = @join('', get_source($page));
if ($postdata === '') $postdata = auto_template($page);
$postdata = remove_author_info($postdata);
return array('msg'=>$_title_edit, 'body'=>edit_form($page, $postdata));
}
+function ensure_valid_page_name_length($page)
+{
+ if (is_page($page)) {
+ // Continue
+ } else {
+ if (is_pagename_bytes_within_soft_limit($page)) {
+ // Continue
+ } else {
+ if (page_exists_in_history($page)) {
+ if (is_pagename_bytes_within_hard_limit($page)) {
+ // Continue
+ } else {
+ die_message('Page name too long (hard limit): ' . htmlsc($page));
+ exit;
+ }
+ } else {
+ die_message('Page name too long: ' . htmlsc($page));
+ exit;
+ }
+ }
+ }
+}
+
/**
* Preview with template
*/
$add = isset($vars['add']) ? $vars['add'] : '';
$digest = isset($vars['digest']) ? $vars['digest'] : '';
+ ensure_valid_page_name_length($page);
$vars['msg'] = preg_replace(PLUGIN_EDIT_FREEZE_REGEX, '', $vars['msg']);
$msg = & $vars['msg']; // Reference