Merge "Message: Throw if given invalid serialized data"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 1 Dec 2018 10:50:18 +0000 (10:50 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 1 Dec 2018 10:50:18 +0000 (10:50 +0000)
1  2 
includes/Message.php

diff --combined includes/Message.php
@@@ -290,7 -290,6 +290,7 @@@ class Message implements MessageSpecifi
                        'format' => $this->format,
                        'useDatabase' => $this->useDatabase,
                        'title' => $this->title,
 +                      'titlestr' => $this->title ? $this->title->getFullText() : null,
                ] );
        }
  
         */
        public function unserialize( $serialized ) {
                $data = unserialize( $serialized );
+               if ( !is_array( $data ) ) {
+                       throw new InvalidArgumentException( __METHOD__ . ': Invalid serialized data' );
+               }
                $this->interface = $data['interface'];
                $this->key = $data['key'];
                $this->keysToTry = $data['keysToTry'];
                $this->format = $data['format'];
                $this->useDatabase = $data['useDatabase'];
                $this->language = $data['language'] ? Language::factory( $data['language'] ) : false;
 -              $this->title = $data['title'];
 +
 +              if ( isset( $data['titlestr'] ) ) {
 +                      $this->title = Title::newFromText( $data['titlestr'] );
 +              } elseif ( isset( $data['title'] ) && $data['title'] instanceof Title ) {
 +                      // Old serializations from before December 2018
 +                      $this->title = $data['title'];
 +              } else {
 +                      $this->title = null; // Explicit for sanity
 +              }
        }
  
        /**