Topic Summary - Displaying 15 post(s). Click here to show all
Posted by: Dandello Posted on: Nov 15th, 2018 at 12:22am
Both the corrected YaBBC AND a version of YaBB 2.7 that doesn't use any './' and so doesn't need the work around. (It uses a safer workaround.) Note the 2.7 will not be able to use './' in Paths.pm but will need the full directory path instead for those places that used to use the './'.
Posted by: Dandello Posted on: Nov 11th, 2018 at 1:24pm
I had put off refactoring YaBBC and when I started I realized there was a lot of repeated code that could be refactored. And then there was the issue of warnings picking up things that had never been warned about.
I'll be looking into the '.' issue later this week. (Assuming I can get my test version of YaBB 2.7 to pop up with the related errors.)
Edited:
There may still be a minor regex problem in YaBBC.pm.
With any luck I'll have a corrected verison in the SVN tomorrow. I'm also working on the '.' issue and some other security things. ( I was able to find instructions on how to invoke the "disable ./" for 5.024.)
Posted by: XTC Posted on: Nov 11th, 2018 at 8:08am
Hello
Have upload the actual branches 2038 Sources .....and the Forum runs without error messages.
Only at in the YaBB.pl the "use lib '.'; " line for my webspace perl.
There are many code changes in the YaBBC.pm .... you are the best
Posted by: Dandello Posted on: Nov 8th, 2018 at 1:29pm
Okay - Activestate Perl 5.024 actually has all the Perl Modules I need for my own coding so I was able to install it without wrecking everything. (There have been versions that didn't have TK in the PPM.)
I'll be uploading the alnum fixes to the SVN shortly. The other error appears to be a regex issue in YaBBC.pm - comment out 'use warnings;' at the top of that file for the short term fix.
5.024 doesn't have the './'deprecated yet as I'm able to run older versions of YaBB that have been fixed to run under 5.022 without any problems.
Edited:
Okay - found the regex causing all the problems. This code is in two places in YaBBC.pm (four places with the added capture checks).
Code
(?:[\w~.;:,\$\-+!*?\/=&@#%()\[\]\x80-\xFF]{1,})
The highlighted section is what's causing the problems but the regex won't properly render urls without it.
I've just uploaded a version of YaBBC.pm to the SVN that has the places this is used put under 'no warnings' so as to not trigger the error. Fixing this regex is beyond me, I'm afraid.
Posted by: Dandello Posted on: Nov 6th, 2018 at 11:22pm
2.6.11 doesn't have 'use strict' and 'use warnings' in the *.pm files. 2.7 does. So undo all the suggested fixes and comment out 'use warnings' starting with Subs.pm.
Oh, and the alnum fix for LogInOut and display should be:
I have not update my Webspace myself ..... this make my hosting provider.
The YaBB 2.6.11 (XTC Support Forum) works fine ..... i have only at the use lib '.'; line in the YaBB.pl lile.
On my own Server runs Perl 5.018
lg XTC
Posted by: Dandello Posted on: Nov 6th, 2018 at 6:20pm
The 'eigxsm' was the correct one for the regexes that were using it . The 'e' evaluates the right hand section of a substitution - I admit to having got confused as that 'e' is one of the few regex modifiers that doesn't work on a match.
Again, I can't get that regex to throw any warnings, even though it probably should. So all I can suggest at the moment is to put everything back the way it was (except for the 'alnum' fixes) and disable 'use warnings' for Subs.pm.
(And I don't dare upgrade to Perl 5.024 or 5.026 until my current database project is done. And considering I'm at 600 of 3200 rows, it's going to take while.)
Have test now "new" wrap2 code ...... also/or changes "eigxsm" to "igxsm" ......but nothing works on perl version
lg XTC
Posted by: Dandello Posted on: Nov 4th, 2018 at 7:21pm
Okay - I think I've actually figured out the problem. It's not actually a bad regex BUT 5.024 is objecting to empty results on 'captures' - things picked out of the string being processed. As I indicated before, regex captures really ought to be tested for before trying to use them but 5.022 doesn't throw a hissy when it sees them.
It looks like 5.024 throws a hissy. (So every replacement that uses a capture has to be tested for validity or you can comment out 'use warnings;' starting with Subs.pm and YaBBC.pm and see if that works. )
Edited:
Okay - more research. 5.022 should be throwing a hissy but my brand new 2.7 install isn't triggering the problem that's in that (really long and overly complicated) regex.
Undo all the changes I've suggested concerning this warning/error and in Subs.pm replace sub wrap 2 (the whole function) with
Code
sub wrap2 {
my ($message) = @_;
if ( $message =~ m/\Q<a href=\E(\S*?)(\s[^>]*)?>(\S*?)<\/a>/ixsm ) {
$message =~
s/\Q<a href=\E(\S*?)(\s[^>]*)?>(\S*?)<\/a>/ my ($mes,$out,$i) = ($3,q{},1); { while ($mes) { if ($mes =~ s\/^(<.+?>)\/\/) { $out .= $1; } elsif ($mes =~ s\/^(&.+?;|\[ch\d{3,}\]|.)\/\/) { last if $i > $linewrap; $i++; $out .= $1; if (!$mes) { $i--; last; } } } } "<a href=$1$2>$out" . ($i > $linewrap ? q{...} : q{}) . '<\/a>' /eigxsm;
}
return $message;
}
Hopefully the new 'if' statement will catch the problem strings before running the rest of the regex. (That is one serious insult to a female dog of a regex. )
Posted by: Dandello Posted on: Nov 4th, 2018 at 4:05pm
Not a problem - I suspected the super long and weirdly complicated regexes were at risk of being bad but put off testing them - and then forgot about it.
Since I'm running Perl 5.022 on my testbed, it was passing bad regex code which 5.024 obviously does no like. As I indicated, I can trigger the problem(s) by first running the regexes through an 'if' statement. (But I also currently have a really messed up 2.7 test forum on my testbed )
Posted by: Dandello Posted on: Nov 4th, 2018 at 2:22pm
Okay - find all instances of 'eigxsm' (there are 5 files with it) and replace it with 'igxsm' - BUT this reveals regex errors in Subs.pm. So expect a lot of fixes in the SVN sometime this week.
Posted by: Dandello Posted on: Nov 4th, 2018 at 1:53pm
Okay, I'm able to 'reproduce' the error by putting the regex into an 'if statement'. (Clunky, but according to Damien Conway all the capturing regexes really should be inside 'if statements' anyway.) This error appears to be related to some deprecated code inside one or more of the complex regexes.
I am in the process of breaking them down to locate the errors - but it may take a while as regexes aren't my firend either.
An Error Has Occurred. (?^msx:(?:[\w~.;:,\$\-+!*?\/=&@#%()\[\]\x80-\xFF]{1,}))+ matches null string many times in regex; marked by <-- HERE in m/((?^msx:[^"=\[\]\/:.\-(:\/\/\w+)]|[\n\b]|\"|\[quote.*?\]|\[edit\]|\[highlight\])|\[
]|\[td\]|\A|[(])\\*(www[.][^.](??^msx:[\w~;:,\$\-+!*?\/=&@#%()\[\](?:<\S+?>\S+?<\/\S+?>)])+?)[.](?^msx:(?:[\w~.;:,\$\-+!*?\/=&@#%()\[\]\x80-\xFF]{1,}))+ <-- HERE ?)/ at Sources/YaBBC.pm line 570.