From 0ec2c55ac097d28032fefe7f898db46b0eba305d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 28 Oct 2018 18:57:45 -0400 Subject: aggregate: Fix aggregation of posts without a title When an aggregated post lacked a title, the code first prepended the $feed->{dir} to it, and only then checked if it had zero length. So, that check could never succeed and it was possible to end up with $page="dir/", and writing to that would of course fail. (Same problem could also occur when the whole title got sanitized away by the wiki_file_regexp.) Fixed by simply checking earlier if $page is empty. Based on a patch by Alexandre Oliva which got lost in a maze of email folders all alike for over two years despite him mentioning it to me at least once in person. --- CHANGELOG | 4 ++++ IkiWiki/Plugin/aggregate.pm | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index cf4f451be..b00dc8218 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,10 @@ ikiwiki (3.20180312) UNRELEASED; urgency=medium [ Simon McVittie ] * Hide popup template content from documentation (Closes: #898836) + [ Joey Hess ] + * aggregate: Fix aggregation of posts without a title. + Thanks, Alexandre Oliva + -- Simon McVittie Wed, 16 May 2018 13:09:27 +0100 ikiwiki (3.20180311) upstream; urgency=medium diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index be7da3a71..05e22a290 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -621,11 +621,11 @@ sub add_page (@) { # escape slashes and periods in title so it doesn't specify # directory name or trigger ".." disallowing code. $page=~s!([/.])!"__".ord($1)."__"!eg; - $page=$feed->{dir}."/".$page; - ($page)=$page=~/$config{wiki_file_regexp}/; if (! defined $page || ! length $page) { $page=$feed->{dir}."/item"; } + $page=$feed->{dir}."/".$page; + ($page)=$page=~/$config{wiki_file_regexp}/; my $c=""; while (exists $IkiWiki::pagecase{lc $page.$c} || -e $IkiWiki::Plugin::transient::transientdir."/".htmlfn($page.$c) || -- cgit v1.2.3