]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
aggregate: Fix aggregation of posts without a title
authorJoey Hess <joeyh@joeyh.name>
Sun, 28 Oct 2018 22:57:45 +0000 (18:57 -0400)
committerJoey Hess <joeyh@joeyh.name>
Sun, 28 Oct 2018 23:00:32 +0000 (19:00 -0400)
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
IkiWiki/Plugin/aggregate.pm

index cf4f451bedd33eab1f7002740e7e85abd0141734..b00dc82189d8b09dbfcbb07737fabb9abd9dc965 100644 (file)
--- 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 <smcv@debian.org>  Wed, 16 May 2018 13:09:27 +0100
 
 ikiwiki (3.20180311) upstream; urgency=medium
index be7da3a710ec66a6243f414d9de62a49580bf6ad..05e22a29013c92f059bc03d18d414a7c8c8ede7d 100644 (file)
@@ -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) ||