Go to file
Joey Hess 716560b7f1 check for invalid utf-8, and toss it back to avoid crashes
Since ikiwiki uses open :utf8, perl assumes that files contain valid utf-8.
If it turns out to be malformed it may later crash while processing strings
read from them, with 'Malformed UTF-8 character (fatal)'.

As at least a quick fix, use utf8::valid as soon as data is read, and if
it's not valid, call encode_utf8 on the string, thus clearing the utf-8
flag. This may cause follow-on encoding problems, but will avoid this
crash, and the input file was broken anyway, so GIGO is a reasonable
response. (I looked at calling decode_utf8 after, but it seemed to cause
more trouble than it was worth. BTW, use open ':encoding(utf8)' avaoids
this problem, but the corrupted data later causes Storable to crash when
writing the index.)

This is a quick fix, clearly imperfect:
- It might be better to explicitly call decode_utf8 when reading files,
  rather than using the IO layer.
- Data read other than by readfile() can still sneak in bad utf-8. While
  ikiwiki does very little file input not using it, stdin for the CGI
  would be one way.
2008-11-12 17:30:54 -05:00
Bundle typo 2008-06-12 14:54:28 -04:00
IkiWiki make unlockwiki drop the cgilock 2008-11-11 20:48:02 -05:00
cpan enhancesments for shared hosting 2008-05-05 14:51:26 -04:00
debian check for invalid utf-8, and toss it back to avoid crashes 2008-11-12 17:30:54 -05:00
doc check for invalid utf-8, and toss it back to avoid crashes 2008-11-12 17:30:54 -05:00
plugins function injection overhaul 2008-10-21 17:57:19 -04:00
po make unlockwiki drop the cgilock 2008-11-11 20:48:02 -05:00
t Fix the link() pagespec to match links that are internally recorded as absolute. 2008-11-09 15:31:57 -05:00
templates Add rel=nofollow to recentchanges_links for the same (weak) reasons it was earlier added to edit links. 2008-11-10 18:05:30 -05:00
underlays use relativedate as the css class for dates that should display relative 2008-10-20 19:22:22 -04:00
.gitignore update ignore 2008-07-26 23:04:54 -04:00
.perlcriticrc fix a common case typo 2008-08-12 15:48:44 -04:00
CHANGELOG * Work on firming up the plugin interface: 2006-09-09 22:50:27 +00:00
IkiWiki.pm check for invalid utf-8, and toss it back to avoid crashes 2008-11-12 17:30:54 -05:00
Makefile.PL preserve underlay file times 2008-10-19 19:25:23 -04:00
NEWS * Work on firming up the plugin interface: 2006-09-09 22:50:27 +00:00
README reformat 2008-09-09 20:24:59 -04:00
auto.setup put monotone dir name munging code in auto.setup 2008-08-22 21:19:53 -04:00
docwiki.setup oops 2008-11-06 20:49:52 -05:00
ikiwiki-makerepo put monotone dir name munging code in auto.setup 2008-08-22 21:19:53 -04:00
ikiwiki-mass-rebuild fix two build bugs 2008-06-13 13:05:44 -04:00
ikiwiki-transition add a guard against multiple cgi or rcs wrappers 2008-08-05 21:02:18 -04:00
ikiwiki-update-wikilist add new wiki to wikilist 2008-07-27 16:01:29 -04:00
ikiwiki-w3m.cgi * Support a w3mmode, which lets w3m run ikiwiki using its local CGI 2006-07-07 21:00:48 +00:00
ikiwiki.in require srcdir and destdir params when --render used w/o --setup 2008-10-30 15:05:58 -04:00
mdwn2man improved period escape 2008-05-30 18:01:16 -04:00
pm_filter If PERL5LIB is set to the libdir when building ikiwiki, calculate and hardcode a proper 'use lib' statement anyway. This fixes a gotcha, since PERL5LIB won't work once ikiwiki is running via a wrapper or as a cgi. 2008-05-14 02:42:01 -04:00
wikilist Fix typo. 2007-04-09 23:54:32 +00:00

README

Use ./Makefile.PL to generate a Makefile, "make" will build the
documentation wiki and a man page, and "make install" will install ikiwiki.

All other documentation is in the ikiwiki documentation wiki, which is also
available online at <http://ikiwiki.info/>


A few special variables you can set while using the Makefile:

  PROFILE=1 turns on profiling for the build of the doc wiki.
  (Uses Devel::Profile)

  NOTAINT=0 turns on the taint flag in the ikiwiki program. (Not recommended
  unless your perl is less buggy than mine -- see
  http://bugs.debian.org/411786)

  There are also other variables supported by MakeMaker, including PREFIX,
  INSTALL_BASE, and DESTDIR. See ExtUtils::MakeMaker(3).

  In particular, INSTALL_BASE is very useful if you want to install ikiwiki
  to some other location, as it configures it to see the perl libraries
  there. See `doc/tips/nearlyfreespeech.mdwn` for an example of using this to
  install ikiwiki and its dependencies in a home directory.