[libnet-openid-common-perl] 01/06: improved <head> parsing to skip CDATA and comments

gregor herrmann gregoa at debian.org
Sun Feb 7 21:50:23 UTC 2016


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to annotated tag v1.030099_004
in repository libnet-openid-common-perl.

commit b3887df9dfd1f58259d0e3a1b920b6983fcc8066
Author: Roger Crew <crew at cs.stanford.edu>
Date:   Tue Sep 6 03:39:39 2011 -0700

    improved <head> parsing to skip CDATA and comments
---
 lib/Net/OpenID/Common.pm | 18 ++++++++++++++++++
 lib/Net/OpenID/Yadis.pm  |  8 ++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/lib/Net/OpenID/Common.pm b/lib/Net/OpenID/Common.pm
index ad957da..a97cb6e 100644
--- a/lib/Net/OpenID/Common.pm
+++ b/lib/Net/OpenID/Common.pm
@@ -196,4 +196,22 @@ sub get_dh {
     return $dh;
 }
 
+# HTML parsing
+sub _extract_head_markup_only {
+    my $htmlref = shift;
+
+    # kill all CDATA sections
+    $$htmlref =~ s/<!\[CDATA\[.*?\]\]>//sg;
+
+    # kill all comments
+    $$htmlref =~ s/<!--.*?-->//sg;
+    # ***FIX?*** Strictly speaking, SGML comments must have matched
+    # pairs of '--'s but almost nobody checks for this or even knows 
+
+    # trim everything past the body.  this is in case the user doesn't
+    # have a head document and somebody was able to inject their own
+    # head.  -- brad choate
+    $$htmlref =~ s/<body\b.*//is;
+}
+
 1;
diff --git a/lib/Net/OpenID/Yadis.pm b/lib/Net/OpenID/Yadis.pm
index 14df9ca..90fdd97 100644
--- a/lib/Net/OpenID/Yadis.pm
+++ b/lib/Net/OpenID/Yadis.pm
@@ -8,6 +8,7 @@ use Carp ();
 use Net::OpenID::URIFetch;
 use XML::Simple;
 use Net::OpenID::Yadis::Service;
+use Net::OpenID::Common;
 
 our @EXPORT = qw(YR_HEAD YR_GET YR_XRDS);
 
@@ -108,12 +109,7 @@ sub _get_contents {
     my $self = shift;
     my  ($url, $final_url_ref, $content_ref, $headers_ref) = @_;
 
-    my $alter_hook = sub {
-        my $htmlref = shift;
-        $$htmlref =~ s/<body\b.*//is;
-    };
-
-    my $res = Net::OpenID::URIFetch->fetch($url, $self->consumer, $alter_hook);
+    my $res = Net::OpenID::URIFetch->fetch($url, $self->consumer, \&OpenID::util::_extract_head_markup_only);
 
     if ($res) {
         $$final_url_ref = $res->final_uri;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libnet-openid-common-perl.git



More information about the Pkg-perl-cvs-commits mailing list