Subject: | Infinite looping Error. |
If you accidently have an include that is parsed as a virtual includes, and you use cache all error handling (ie a script that displays an alternate 404 error page) for your webserver (fairly prevelent) in your webserver, you can cause an infinite loop for this module causing memory problems/overflows/etc. depending on your flavor of webserver.
This has been tested under windows 2000, xp, and 2003 using the most recent stable builds of ActiveState Perl versions 5.6 and 5.8 under Apache 2.0.49 to 2.0.53; Other OS's, distributions of perl, and webservers should also be vulrable to this error which may crash your webserver/OS since perl modules are theoritically portable and nearly platform independent.
Earlier versions of this module may have the same logic error as well.
Suggested Fixes include directory testing for local relative directories at the very least using '-e' with the relative path. This would require that the document root of the webserver (which translates into the URL) would need to be logically attained and/or provided as input into the module for translation.
The error appears to be in sub _include_virtual:
This original line:
if($filename =~ m|^/|) { # this is on the local server
Shoulde be reconsidered to something such as:
if($filename =~ m|^/| && -e $self->_include_file($self->{'_variables'}->{'DOCUMENT_ROOT'}.$filename) { # this is on the local server
...etc.