Fix utf8 issues in calls to md5_hex.

This prevented comments containing some utf-8, including euro sign, from
being submitted. Since md5_hex is a C implementation, the string has to be
converted from perl's internal encoding to utf-8 when it is called. Some
utf-8 happened to work before, apparently by accident.

Note that this will change the checksums returned.

unique_comment_location is only used when posting comments, so the checksum
does not need to be stable there.

I only changed page_to_id for completeness; it is passed a comment page
name, and they can currently never contain utf-8.

In teximg, the bug could perhaps be triggered if the tex source contained
utf-8. If that happens, the checksum will change, and some extra work might
be performed on upgrade to rebuild the image.
master
Joey Hess 2010-03-09 19:55:19 -05:00
parent fa6d082955
commit 6d27bbd026
3 changed files with 10 additions and 3 deletions

View File

@ -839,7 +839,7 @@ sub unique_comment_location ($$$) {
eval q{use Digest::MD5 'md5_hex'};
error($@) if $@;
my $content_md5=md5_hex(shift);
my $content_md5=md5_hex(Encode::encode_utf8(shift));
my $dir=shift;
@ -862,7 +862,7 @@ sub page_to_id ($) {
eval q{use Digest::MD5 'md5_hex'};
error($@) if $@;
return "comment-".md5_hex($page);
return "comment-".md5_hex(Encode::encode_utf8(($page));
}
package IkiWiki::PageSpec;

View File

@ -8,6 +8,7 @@ use strict;
use Digest::MD5 qw(md5_hex);
use File::Temp qw(tempdir);
use HTML::Entities;
use Encode;
use IkiWiki 3.00;
my $default_prefix = <<EOPREFIX;
@ -103,7 +104,7 @@ sub create ($$$) {
$height = 12;
}
my $digest = md5_hex($code, $height);
my $digest = md5_hex(Encode::encode_utf8($code), $height);
my $imglink= $params->{page} . "/$digest.png";
my $imglog = $params->{page} . "/$digest.log";

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
ikiwiki (3.20100303) UNRELEASED; urgency=low
* Fix utf8 issues in calls to md5_hex.
-- Joey Hess <joeyh@debian.org> Tue, 09 Mar 2010 19:46:35 -0500
ikiwiki (3.20100302) unstable; urgency=low
* comments: Display number of comments in comment action link.