KarenEddy has submitted this change and it was merged.

Change subject: Critical Update: Fixes an infinite loop in an xml parsing 
function.
......................................................................


Critical Update:
Fixes an infinite loop in an xml parsing function.

Change-Id: I54303300c0442cf1beefc391a182e68b6485ad04
(cherry picked from commit 1f077732a1267c44104985ba3f10132811bbc249)
---
M BiblioPlus.body.php
1 file changed, 16 insertions(+), 16 deletions(-)

Approvals:
  KarenEddy: Verified; Looks good to me, approved



diff --git a/BiblioPlus.body.php b/BiblioPlus.body.php
index 88ebdfb..f77d592 100644
--- a/BiblioPlus.body.php
+++ b/BiblioPlus.body.php
@@ -182,17 +182,14 @@
        */
     function parsePubMed( $pmXml ) {
         $formattedRefs = array();
-
         $xml = simplexml_load_string( $pmXml );
 
         if ( $xml ) {
             // find the document summary tags
             $docSums = $xml;
-            while ( $docSums->getName() != 'DocumentSummary' ) {
-                $docSums = $docSums->children();
-            }
+                       $docSums = $docSums->xpath('//DocumentSummary');
 
-            // extract required information from each document summary
+           // extract required information from each document summary
             foreach ( $docSums as $docSum ) {
                 $authors = array();
 
@@ -200,10 +197,12 @@
                 $pmid = ( string )$docSum['uid'];
 
                 // get the list of authors
-                foreach ( $docSum->Authors->children() as $author ) {
-                    $authors[] = $author->Name;
-                }
-                $authors = $this->concatAuthors( $authors );
+                               if ( $docSum->Authors ) {
+                                       foreach ( $docSum->Authors->children() 
as $author ) {
+                                               $authors[] = $author->Name;
+                                       }
+                                       $authors = $this->concatAuthors( 
$authors );
+                               }
 
                 // get the other attributes
                 $title = $docSum->Title;
@@ -214,13 +213,14 @@
                 $pages = $docSum->Pages;
                 $doi = '';
 
-                foreach ( $docSum->ArticleIds->children() as $articleId ) {
-                    if ( $articleId->IdType == 'doi' ) {
-                        $doi = $articleId->Value;
-                        break;
-                    }
-                }
-
+                               if ( $docSum->ArticleIds ) {
+                                       foreach ( 
$docSum->ArticleIds->children() as $articleId ) {
+                                               if ( $articleId->IdType == 
'doi' ) {
+                                                       $doi = 
$articleId->Value;
+                                                       break;
+                                               }
+                                       }
+                               }
                 // format for output to page
                 $origin = "$source $pubDate";
                 $origin .= $volume == '' ? '' : ";$volume";

-- 
To view, visit https://gerrit.wikimedia.org/r/72685
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I54303300c0442cf1beefc391a182e68b6485ad04
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/BiblioPlus
Gerrit-Branch: master
Gerrit-Owner: KarenEddy <kfe...@msn.com>
Gerrit-Reviewer: Acrida <francescf...@gmail.com>
Gerrit-Reviewer: KarenEddy <kfe...@msn.com>
Gerrit-Reviewer: Owora <mireiafabre...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to