Edgewall Software

Ticket #7065: 7065-limit-wiki-ticket-comment-size-r7439.patch

File 7065-limit-wiki-ticket-comment-size-r7439.patch, 2.4 KB (added by Remy Blank <remy.blank@…>, 4 months ago)

Patch against 0.11-stable adding options to limit wiki page and ticket comment length

  • trac/ticket/web_ui.py

    diff --git a/trac/ticket/web_ui.py b/trac/ticket/web_ui.py
    a b  
    106106    max_description_size = IntOption('ticket', 'max_description_size', 262144, 
    107107        """Don't accept tickets with a too big description. 
    108108        (''since 0.11'').""") 
     109 
     110    max_comment_size = IntOption('ticket', 'max_comment_size', 262144, 
     111        """Don't accept tickets with a too big comment. 
     112        (''since 0.11'')""") 
    109113 
    110114    timeline_newticket_formatter = Option('timeline', 'newticket_formatter', 
    111115                                          'oneliner', 
     
    928932                          num=self.max_description_size)) 
    929933            valid = False 
    930934 
     935        # Validate comment length 
     936        if len(comment or '') > self.max_comment_size: 
     937            add_warning(req, _('Ticket comment is too long (must be less ' 
     938                               'than %(num)s characters)', 
     939                               num=self.max_comment_size)) 
     940            valid = False 
     941 
    931942        # Validate comment numbering 
    932943        try: 
    933944            # comment index must be a number 
  • trac/wiki/web_ui.py

    diff --git a/trac/wiki/web_ui.py b/trac/wiki/web_ui.py
    a b  
    2424from genshi.builder import tag 
    2525 
    2626from trac.attachment import AttachmentModule 
     27from trac.config import IntOption 
    2728from trac.core import * 
    2829from trac.mimeview.api import Mimeview, IContentConverter, Context 
    2930from trac.perm import IPermissionRequestor 
     
    5758               ITemplateProvider) 
    5859 
    5960    page_manipulators = ExtensionPoint(IWikiPageManipulator) 
     61 
     62    max_size = IntOption('wiki', 'max_size', 262144, 
     63        """Maximum allowed wiki page size in bytes. (''since 0.11'')""") 
    6064 
    6165    PAGE_TEMPLATES_PREFIX = 'PageTemplates/' 
    6266    DEFAULT_PAGE_TEMPLATE = 'DefaultPage' 
     
    173177 
    174178    def _validate(self, req, page): 
    175179        valid = True 
     180         
     181        # Validate page size 
     182        if len(req.args.get('text', '')) > self.max_size: 
     183            add_warning(req, _('The wiki page is too long (must be less ' 
     184                               'than %(num)s characters)', 
     185                               num=self.max_size)) 
     186            valid = False 
     187 
    176188        # Give the manipulators a pass at post-processing the page 
    177189        for manipulator in self.page_manipulators: 
    178190            for field, message in manipulator.validate_wiki_page(req, page):