Files
oddmuse/modules
Alex Schroeder 46cb69a6c3 Use helper functions for accessing the file system
As we derive a lot of filenames from strings in UTF-8 encoded files, we
need to make sure that any filename that might might be set by a user –
including all the filenames containing a directory deriving from
$DataDir – are passed through utf8::encode. That is, every character
gets replaced with a sequence of one or more characters that represent
the individual bytes of the character and the UTF8 flag is turned off.

In other words, -d $DataDir might not work if $DataDir contains a UTF-8
encoded string. The solution is to use the following replacements:

-f $name            IsFile($name)
-e $name            IsFile($name)
-d $name            IsDir($name)
(stat($name))[9]    Modified($name)
-M $name            $Now - Modified($name)
-z $name            ZeroSize($name)
unlink $name        Unlink($name)
mkdir $name         CreateDir($name)
rmdir $name         RemoveDir($name)

(Using IsFile for -e is probably not ideal?)

If you don’t, and Oddmuse gets used with Mojolicious, and you use the
Namespaces Extension, and a namespace contains non-ASCII characters such
as ä, ö, or ü, these characters will end up as part of $DataDir and
trigger the problem.

I also wonder whether we should be using some other Perl library.
2016-06-17 14:49:34 +02:00
..
2016-05-28 13:58:57 +02:00
2015-09-12 19:06:59 +02:00
2015-09-04 04:55:48 +03:00
2015-10-21 12:15:25 +03:00
2015-10-15 14:41:55 +02:00
2015-10-18 02:48:06 +03:00
2015-07-28 10:47:21 +02:00
2015-10-14 12:39:55 +02:00
2015-10-15 14:41:55 +02:00
2015-10-31 02:58:00 +02:00
2015-10-15 14:36:51 +02:00
2015-08-18 11:11:13 +02:00
2015-08-18 11:11:13 +02:00
2015-10-15 14:24:08 +02:00