Security Advisories (1)
CVE-2012-1102 (2021-07-09)

It was discovered that the XML::Atom Perl module before version 0.39 did not disable external entities when parsing XML from potentially untrusted sources. This may allow attackers to gain read access to otherwise protected resources, depending on how the library is used.

NAME

XML::Atom::Entry - Atom entry

SYNOPSIS

use XML::Atom::Entry;
my $entry = XML::Atom::Entry->new;
$entry->title('My Post');
$entry->content('The content of my post.');
my $xml = $entry->as_xml;
my $dc = XML::Atom::Namespace->new(dc => 'http://purl.org/dc/elements/1.1/');
$entry->set($dc, 'subject', 'Food & Drink');

USAGE

XML::Atom::Entry->new([ $stream ])

Creates a new entry object, and if $stream is supplied, fills it with the data specified by $stream.

Automatically handles autodiscovery if $stream is a URI (see below).

Returns the new XML::Atom::Entry object. On failure, returns undef.

$stream can be any one of the following:

  • Reference to a scalar

    This is treated as the XML body of the entry.

  • Scalar

    This is treated as the name of a file containing the entry XML.

  • Filehandle

    This is treated as an open filehandle from which the entry XML can be read.

$entry->content([ $content ])

Returns the content of the entry. If $content is given, sets the content of the entry. Automatically handles all necessary escaping.

$entry->author([ $author ])

Returns an XML::Atom::Person object representing the author of the entry, or undef if there is no author information present.

If $author is supplied, it should be an XML::Atom::Person object representing the author. For example:

my $author = XML::Atom::Person->new;
$author->name('Foo Bar');
$author->email('foo@bar.com');
$entry->author($author);

If called in scalar context, returns an XML::Atom::Link object corresponding to the first <link> tag found in the entry.

If called in list context, returns a list of XML::Atom::Link objects corresponding to all of the <link> tags found in the entry.

$entry->add_link($link)

Adds the link $link, which must be an XML::Atom::Link object, to the entry as a new <link> tag. For example:

my $link = XML::Atom::Link->new;
$link->type('text/html');
$link->rel('alternate');
$link->href('http://www.example.com/2003/12/post.html');
$entry->add_link($link);

$entry->get($ns, $element)

Given an XML::Atom::Namespace element $ns and an element name $element, retrieves the value for the element in that namespace.

This is useful for retrieving the value of elements not in the main Atom namespace, like categories. For example:

my $dc = XML::Atom::Namespace->new(dc => 'http://purl.org/dc/elements/1.1/');
my $subj = $entry->get($dc, 'subject');

$entry->getlist($ns, $element)

Just like $entry->get, but if there are multiple instances of the element $element in the namespace $ns, returns all of them. get will return only the first.

AUTHOR & COPYRIGHT

Please see the XML::Atom manpage for author, copyright, and license information.