Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package drupal7

My upload includes two important security fixes plus several minor
reliability fixes, backported respectively from versions 7.33 and
7.34.

Debdiff attached, or available via anonscm:

  
https://anonscm.debian.org/cgit/collab-maint/drupal7.git/diff/?id=debian/7.32-1%2bdeb8u1&id2=debian/7.32-1

I don't know how rigurous this "pre-approval" is, but I checked this
with jmw yesterday on IRC.

Thanks!

unblock drupal7/7.32-1+deb8u1

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru drupal7-7.32/debian/changelog drupal7-7.32/debian/changelog
--- drupal7-7.32/debian/changelog       2014-10-15 11:34:54.000000000 -0500
+++ drupal7-7.32/debian/changelog       2014-11-21 13:28:18.000000000 -0600
@@ -1,3 +1,14 @@
+drupal7 (7.32-1+deb8u1) unstable; urgency=high
+
+  * Updated the VCS URL in debian/control as git.debian.org is deprecated
+  * Debian has frozen! We will start backporting the important fixes to
+    7.32
+  * Backported from 7.34: SA-CORE-2014-006 (Session hijacking CVE-2014-
+    9015, Denial of service CVE-2014-9016)
+  * Several minor reliability fixes backported from 7.33
+
+ -- Gunnar Wolf <gw...@debian.org>  Wed, 15 Oct 2014 12:45:29 -0500
+
 drupal7 (7.32-1) unstable; urgency=critical
 
   * New upstream release
diff -Nru drupal7-7.32/debian/control drupal7-7.32/debian/control
--- drupal7-7.32/debian/control 2014-10-15 11:34:54.000000000 -0500
+++ drupal7-7.32/debian/control 2014-11-21 13:28:18.000000000 -0600
@@ -6,7 +6,7 @@
 Build-Depends: debhelper (>= 7.0.50~), yui-compressor
 Homepage: http://www.drupal.org/
 Standards-Version: 3.9.6.0
-Vcs-Git: git://git.debian.org/git/collab-maint/drupal7.git
+Vcs-Git: git://anonscm.debian.org/collab-maint/drupal7.git
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/drupal7.git
 
 Package: drupal7
diff -Nru drupal7-7.32/debian/patches/ajax_throbber_align 
drupal7-7.32/debian/patches/ajax_throbber_align
--- drupal7-7.32/debian/patches/ajax_throbber_align     1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/ajax_throbber_align     2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,112 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Fixes alignment issue in the Ajax progress throbber
+ Fixed a bug which caused the Ajax progress throbber to appear misaligned in
+ many situatons (minor styling change).
+ .
+ Fixes Drupal issue #1069152
+ .
+ Backported from 7.33.
+Index: drupal7/modules/system/system.base-rtl.css
+===================================================================
+--- drupal7.orig/modules/system/system.base-rtl.css
++++ drupal7/modules/system/system.base-rtl.css
+@@ -9,10 +9,10 @@
+  */
+ /* Animated throbber */
+ html.js input.form-autocomplete {
+-  background-position: 0% 2px;
++  background-position: 0% center;
+ }
+ html.js input.throbbing {
+-  background-position: 0% -18px;
++  background-position: 0% center;
+ }
+ 
+ /**
+Index: drupal7/modules/system/system.base.css
+===================================================================
+--- drupal7.orig/modules/system/system.base.css
++++ drupal7/modules/system/system.base.css
+@@ -31,12 +31,13 @@
+ }
+ /* Animated throbber */
+ html.js input.form-autocomplete {
+-  background-image: url(../../misc/throbber.gif);
+-  background-position: 100% 2px; /* LTR */
++  background-image: url(../../misc/throbber-inactive.png);
++  background-position: 100% center; /* LTR */
+   background-repeat: no-repeat;
+ }
+ html.js input.throbbing {
+-  background-position: 100% -18px; /* LTR */
++  background-image: url(../../misc/throbber-active.gif);
++  background-position: 100% center; /* LTR */
+ }
+ 
+ /**
+@@ -164,7 +165,7 @@ table.sticky-header {
+   display: inline-block;
+ }
+ .ajax-progress .throbber {
+-  background: transparent url(../../misc/throbber.gif) no-repeat 0px -18px;
++  background: transparent url(../../misc/throbber-active.gif) no-repeat 0px 
center;
+   float: left; /* LTR */
+   height: 15px;
+   margin: 2px;
+Index: drupal7/themes/bartik/css/style.css
+===================================================================
+--- drupal7.orig/themes/bartik/css/style.css
++++ drupal7/themes/bartik/css/style.css
+@@ -1326,14 +1326,6 @@ input.form-button-disabled:active,
+   color: #717171;
+ }
+ 
+-/* Animated throbber */
+-html.js input.form-autocomplete {
+-  background-position: 100% 4px; /* LTR */
+-}
+-html.js input.throbbing {
+-  background-position: 100% -16px; /* LTR */
+-}
+-
+ /* Comment form */
+ .comment-form label {
+   float: left; /* LTR */
+Index: drupal7/themes/seven/style.css
+===================================================================
+--- drupal7.orig/themes/seven/style.css
++++ drupal7/themes/seven/style.css
+@@ -709,12 +709,7 @@ select.form-select:focus {
+   color: #000;
+   border-color: #ace;
+ }
+-html.js input.form-autocomplete {
+-  background-position: 100% 4px;
+-}
+-html.js input.throbbing {
+-  background-position: 100% -16px;
+-}
++
+ ul.action-links {
+   margin: 1em 0;
+   padding: 0 20px 0 20px; /* LTR */
+Index: drupal7/themes/bartik/css/style-rtl.css
+===================================================================
+--- drupal7.orig/themes/bartik/css/style-rtl.css
++++ drupal7/themes/bartik/css/style-rtl.css
+@@ -225,10 +225,10 @@ ul.action-links li a {
+ 
+ /* Animated throbber */
+ html.js input.form-autocomplete {
+-  background-position: 1% 4px;
++  background-position: 1% center;
+ }
+ html.js input.throbbing {
+-  background-position: 1% -16px;
++  background-position: 1% center;
+ }
+ 
+ /* Comment form */
diff -Nru drupal7-7.32/debian/patches/db_sanitize_orderby 
drupal7-7.32/debian/patches/db_sanitize_orderby
--- drupal7-7.32/debian/patches/db_sanitize_orderby     1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/db_sanitize_orderby     2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,71 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Fixes Drupal issue #829464
+ Security improvement: Made the database API's orderBy() method sanitize the
+ sort direction ("ASC" or "DESC") for queries built with db_select(), so that
+ calling code does not have to.
+ .
+ Backported from 7.33.
+Index: drupal7/includes/database/select.inc
+===================================================================
+--- drupal7.orig/includes/database/select.inc
++++ drupal7/includes/database/select.inc
+@@ -377,7 +377,8 @@ interface SelectQueryInterface extends Q
+    * @param $field
+    *   The field on which to order.
+    * @param $direction
+-   *   The direction to sort. Legal values are "ASC" and "DESC".
++   *   The direction to sort. Legal values are "ASC" and "DESC". Any other 
value
++   *   will be converted to "ASC".
+    * @return SelectQueryInterface
+    *   The called object.
+    */
+@@ -1384,6 +1385,8 @@ class SelectQuery extends Query implemen
+   }
+ 
+   public function orderBy($field, $direction = 'ASC') {
++    // Only allow ASC and DESC, default to ASC.
++    $direction = strtoupper($direction) == 'DESC' ? 'DESC' : 'ASC';
+     $this->order[$field] = $direction;
+     return $this;
+   }
+Index: drupal7/includes/tablesort.inc
+===================================================================
+--- drupal7.orig/includes/tablesort.inc
++++ drupal7/includes/tablesort.inc
+@@ -46,10 +46,9 @@ class TableSort extends SelectQueryExten
+       // Based on code from db_escape_table(), but this can also contain a 
dot.
+       $field = preg_replace('/[^A-Za-z0-9_.]+/', '', $ts['sql']);
+ 
+-      // Sort order can only be ASC or DESC.
+-      $sort = drupal_strtoupper($ts['sort']);
+-      $sort = in_array($sort, array('ASC', 'DESC')) ? $sort : '';
+-      $this->orderBy($field, $sort);
++      // orderBy() will ensure that only ASC/DESC values are accepted, so we
++      // don't need to sanitize that here.
++      $this->orderBy($field, $ts['sort']);
+     }
+     return $this;
+   }
+Index: drupal7/modules/simpletest/tests/database_test.test
+===================================================================
+--- drupal7.orig/modules/simpletest/tests/database_test.test
++++ drupal7/modules/simpletest/tests/database_test.test
+@@ -1947,6 +1947,15 @@ class DatabaseSelectOrderedTestCase exte
+ 
+     $this->assertEqual($num_records, 4, 'Returned the correct number of 
rows.');
+   }
++
++  /**
++   * Tests that the sort direction is sanitized properly.
++   */
++  function testOrderByEscaping() {
++    $query = db_select('test')->orderBy('name', 'invalid direction');
++    $order_bys = $query->getOrderBy();
++    $this->assertEqual($order_bys['name'], 'ASC', 'Invalid order by direction 
is converted to ASC.');
++  }
+ }
+ 
+ /**
diff -Nru drupal7-7.32/debian/patches/dont_lose_user_pictures 
drupal7-7.32/debian/patches/dont_lose_user_pictures
--- drupal7-7.32/debian/patches/dont_lose_user_pictures 1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/dont_lose_user_pictures 2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,56 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Avoid losing user pictures when re-saving
+ Fixed a bug which caused user pictures to be removed from the user object
+ after saving, and resulted in data loss if the user account was subsequently
+ re-saved.
+ .
+ Fixes Drupal issue #935592
+ .
+ Backported from 7.33.
+Index: drupal7/modules/user/user.module
+===================================================================
+--- drupal7.orig/modules/user/user.module
++++ drupal7/modules/user/user.module
+@@ -501,12 +501,17 @@ function user_save($account, $edit = arr
+         file_usage_delete($account->original->picture, 'user', 'user', 
$account->uid);
+         file_delete($account->original->picture);
+       }
++      // Save the picture object, if it is set. drupal_write_record() expects
++      // $account->picture to be a FID.
++      $picture = empty($account->picture) ? NULL : $account->picture;
+       $account->picture = empty($account->picture->fid) ? 0 : 
$account->picture->fid;
+ 
+       // Do not allow 'uid' to be changed.
+       $account->uid = $account->original->uid;
+       // Save changes to the user table.
+       $success = drupal_write_record('users', $account, 'uid');
++      // Restore the picture object.
++      $account->picture = $picture;
+       if ($success === FALSE) {
+         // The query failed - better to abort the save than risk further
+         // data loss.
+Index: drupal7/modules/user/user.test
+===================================================================
+--- drupal7.orig/modules/user/user.test
++++ drupal7/modules/user/user.test
+@@ -1127,6 +1127,17 @@ class UserPictureTestCase extends Drupal
+ 
+       $pic_path2 = $this->saveUserPicture($image);
+       $this->assertNotEqual($pic_path, $pic_path2, 'Filename of second 
picture is different.');
++
++      // Check if user picture has a valid file ID after saving the user.
++      $account = user_load($this->user->uid, TRUE);
++      $this->assertTrue(is_object($account->picture), 'User picture object is 
valid after user load.');
++      $this->assertNotNull($account->picture->fid, 'User picture object has a 
FID after user load.');
++      $this->assertTrue(is_file($account->picture->uri), 'File is located in 
proper directory after user load.');
++      user_save($account);
++      // Verify that the user save does not destroy the user picture object.
++      $this->assertTrue(is_object($account->picture), 'User picture object is 
valid after user save.');
++      $this->assertNotNull($account->picture->fid, 'User picture object has a 
FID after user save.');
++      $this->assertTrue(is_file($account->picture->uri), 'File is located in 
proper directory after user save.');
+     }
+   }
+ 
diff -Nru drupal7-7.32/debian/patches/fix_bootstrap_phase 
drupal7-7.32/debian/patches/fix_bootstrap_phase
--- drupal7-7.32/debian/patches/fix_bootstrap_phase     1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/fix_bootstrap_phase     2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,65 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Fixes Drupal issue #667098
+ Fixed a bug which caused drupal_get_bootstrap_phase() to abort the bootstrap
+ when called early in the page request.
+ .
+ Backported from 7.33.
+
+Index: drupal7/includes/bootstrap.inc
+===================================================================
+--- drupal7.orig/includes/bootstrap.inc
++++ drupal7/includes/bootstrap.inc
+@@ -2176,7 +2176,7 @@ function drupal_anonymous_user() {
+  *   drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
+  * @endcode
+  *
+- * @param $phase
++ * @param int $phase
+  *   A constant telling which phase to bootstrap to. When you bootstrap to a
+  *   particular phase, all earlier phases are run automatically. Possible
+  *   values:
+@@ -2189,11 +2189,11 @@ function drupal_anonymous_user() {
+  *   - DRUPAL_BOOTSTRAP_LANGUAGE: Finds out the language of the page.
+  *   - DRUPAL_BOOTSTRAP_FULL: Fully loads Drupal. Validates and fixes input
+  *     data.
+- * @param $new_phase
++ * @param boolean $new_phase
+  *   A boolean, set to FALSE if calling drupal_bootstrap from inside a
+  *   function called from drupal_bootstrap (recursion).
+  *
+- * @return
++ * @return int
+  *   The most recently completed phase.
+  */
+ function drupal_bootstrap($phase = NULL, $new_phase = TRUE) {
+@@ -2215,12 +2215,13 @@ function drupal_bootstrap($phase = NULL,
+   // bootstrap state.
+   static $stored_phase = -1;
+ 
+-  // When not recursing, store the phase name so it's not forgotten while
+-  // recursing.
+-  if ($new_phase) {
+-    $final_phase = $phase;
+-  }
+   if (isset($phase)) {
++    // When not recursing, store the phase name so it's not forgotten while
++    // recursing but take care of not going backwards.
++    if ($new_phase && $phase >= $stored_phase) {
++      $final_phase = $phase;
++    }
++
+     // Call a phase if it has not been called before and is below the 
requested
+     // phase.
+     while ($phases && $phase > $stored_phase && $final_phase > $stored_phase) 
{
+@@ -2508,7 +2509,7 @@ function _drupal_bootstrap_page_header()
+  * @see drupal_bootstrap()
+  */
+ function drupal_get_bootstrap_phase() {
+-  return drupal_bootstrap();
++  return drupal_bootstrap(NULL, FALSE);
+ }
+ 
+ /**
diff -Nru drupal7-7.32/debian/patches/fix_field_has_data_return 
drupal7-7.32/debian/patches/fix_field_has_data_return
--- drupal7-7.32/debian/patches/fix_field_has_data_return       1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/fix_field_has_data_return       2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,108 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Avoid data loss on entities with revisions due to wrong return 
code
+ Fixed a bug in which field_has_data() did not return TRUE for fields that
+ only had data in older entity revisions, leading to loss of the field's data
+ when the field configuration was edited.
+ .
+ Fixes Drupal issue #2278583
+ .
+ Backported from 7.33.
+Index: drupal7/modules/field/field.module
+===================================================================
+--- drupal7.orig/modules/field/field.module
++++ drupal7/modules/field/field.module
+@@ -947,14 +947,17 @@ function field_get_items($entity_type, $
+  */
+ function field_has_data($field) {
+   $query = new EntityFieldQuery();
+-  return (bool) $query
+-    ->fieldCondition($field)
++  $query = $query->fieldCondition($field)
+     ->range(0, 1)
+     ->count()
+     // Neutralize the 'entity_field_access' query tag added by
+     // field_sql_storage_field_storage_query(). The result cannot depend on 
the
+     // access grants of the current user.
+-    ->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT')
++    ->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT');
++
++  return (bool) $query
++    ->execute() || (bool) $query
++    ->age(FIELD_LOAD_REVISION)
+     ->execute();
+ }
+ 
+Index: drupal7/modules/field/tests/field.test
+===================================================================
+--- drupal7.orig/modules/field/tests/field.test
++++ drupal7/modules/field/tests/field.test
+@@ -485,6 +485,66 @@ class FieldAttachStorageTestCase extends
+   }
+ 
+   /**
++   * Test field_has_data().
++   */
++  function testFieldHasData() {
++    $entity_type = 'test_entity';
++    $langcode = LANGUAGE_NONE;
++
++    $field_name = 'field_1';
++    $field = array('field_name' => $field_name, 'type' => 'test_field');
++    $field = field_create_field($field);
++
++    $this->assertFalse(field_has_data($field), "No data should be detected.");
++
++    $instance = array(
++      'field_name' => $field_name,
++      'entity_type' => 'test_entity',
++      'bundle' => 'test_bundle'
++    );
++    $instance = field_create_instance($instance);
++    $table = _field_sql_storage_tablename($field);
++    $revision_table = _field_sql_storage_revision_tablename($field);
++
++    $columns = array('entity_type', 'entity_id', 'revision_id', 'delta', 
'language', $field_name . '_value');
++
++    $eid = 0;
++
++    // Insert values into the field revision table.
++    $query = db_insert($revision_table)->fields($columns);
++    $query->values(array($entity_type, $eid, 0, 0, $langcode, 1));
++    $query->execute();
++
++    $this->assertTrue(field_has_data($field), "Revision data only should be 
detected.");
++
++    $field_name = 'field_2';
++    $field = array('field_name' => $field_name, 'type' => 'test_field');
++    $field = field_create_field($field);
++
++    $this->assertFalse(field_has_data($field), "No data should be detected.");
++
++    $instance = array(
++      'field_name' => $field_name,
++      'entity_type' => 'test_entity',
++      'bundle' => 'test_bundle'
++    );
++    $instance = field_create_instance($instance);
++    $table = _field_sql_storage_tablename($field);
++    $revision_table = _field_sql_storage_revision_tablename($field);
++
++    $columns = array('entity_type', 'entity_id', 'revision_id', 'delta', 
'language', $field_name . '_value');
++
++    $eid = 1;
++
++    // Insert values into the field table.
++    $query = db_insert($table)->fields($columns);
++    $query->values(array($entity_type, $eid, 0, 0, $langcode, 1));
++    $query->execute();
++
++    $this->assertTrue(field_has_data($field), "Values only in field table 
should be detected.");
++  }
++
++  /**
+    * Test field_attach_delete().
+    */
+   function testFieldAttachDelete() {
diff -Nru drupal7-7.32/debian/patches/SA-CORE-2014-006 
drupal7-7.32/debian/patches/SA-CORE-2014-006
--- drupal7-7.32/debian/patches/SA-CORE-2014-006        1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/SA-CORE-2014-006        2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,79 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Fixes SA-CORE-2014-006 (Session hijacking, Denial of service)
+ Backporting the diff between versions 7.33 and 7.34, applying it to
+ the currently frozen version (7.32). For further details, the
+ advisory is in:
+ .
+ http://drupal.org/SA-CORE-2014-006
+ This fix coves CVE-2014-9015 and CVE-2014-9016.
+
+Index: drupal7/includes/password.inc
+===================================================================
+--- drupal7.orig/includes/password.inc
++++ drupal7/includes/password.inc
+@@ -140,7 +140,7 @@ function _password_enforce_log2_boundari
+  * @param $algo
+  *   The string name of a hashing algorithm usable by hash(), like 'sha256'.
+  * @param $password
+- *   The plain-text password to hash.
++ *   Plain-text password up to 512 bytes (128 to 512 UTF-8 characters) to 
hash.
+  * @param $setting
+  *   An existing hash or the output of _password_generate_salt().  Must be
+  *   at least 12 characters (the settings and salt).
+@@ -150,6 +150,10 @@ function _password_enforce_log2_boundari
+  *   The return string will be truncated at DRUPAL_HASH_LENGTH characters max.
+  */
+ function _password_crypt($algo, $password, $setting) {
++  // Prevent DoS attacks by refusing to hash large passwords.
++  if (strlen($password) > 512) {
++    return FALSE;
++  }
+   // The first 12 characters of an existing hash are its setting string.
+   $setting = substr($setting, 0, 12);
+ 
+Index: drupal7/includes/session.inc
+===================================================================
+--- drupal7.orig/includes/session.inc
++++ drupal7/includes/session.inc
+@@ -79,7 +79,7 @@ function _drupal_session_read($sid) {
+   // Handle the case of first time visitors and clients that don't store
+   // cookies (eg. web crawlers).
+   $insecure_session_name = substr(session_name(), 1);
+-  if (!isset($_COOKIE[session_name()]) && 
!isset($_COOKIE[$insecure_session_name])) {
++  if (empty($sid) || (!isset($_COOKIE[session_name()]) && 
!isset($_COOKIE[$insecure_session_name]))) {
+     $user = drupal_anonymous_user();
+     return '';
+   }
+Index: drupal7/modules/simpletest/tests/password.test
+===================================================================
+--- drupal7.orig/modules/simpletest/tests/password.test
++++ drupal7/modules/simpletest/tests/password.test
+@@ -57,4 +57,25 @@ class PasswordHashingTest extends Drupal
+     $this->assertFalse(user_needs_new_hash($account), 'Re-hashed password 
does not need a new hash.');
+     $this->assertTrue(user_check_password($password, $account), 'Password 
check succeeds with re-hashed password.');
+   }
++
++  /**
++   * Verifies that passwords longer than 512 bytes are not hashed.
++   */
++  public function testLongPassword() {
++    $password = str_repeat('x', 512);
++    $result = user_hash_password($password);
++    $this->assertFalse(empty($result), '512 byte long password is allowed.');
++    $password = str_repeat('x', 513);
++    $result = user_hash_password($password);
++    $this->assertFalse($result, '513 byte long password is not allowed.');
++    // Check a string of 3-byte UTF-8 characters.
++    $password = str_repeat('€', 170);
++    $result = user_hash_password($password);
++    $this->assertFalse(empty($result), '510 byte long password is allowed.');
++    $password .= 'xx';
++    $this->assertFalse(empty($result), '512 byte long password is allowed.');
++    $password = str_repeat('€', 171);
++    $result = user_hash_password($password);
++    $this->assertFalse($result, '513 byte long password is not allowed.');
++  }
+ }
diff -Nru drupal7-7.32/debian/patches/series drupal7-7.32/debian/patches/series
--- drupal7-7.32/debian/patches/series  2014-10-15 11:34:54.000000000 -0500
+++ drupal7-7.32/debian/patches/series  2014-11-21 13:28:18.000000000 -0600
@@ -1,2 +1,9 @@
 cronjob.patch
 debian_security_warning
+SA-CORE-2014-006
+fix_bootstrap_phase
+unicode_for_php_5.6
+db_sanitize_orderby
+ajax_throbber_align
+fix_field_has_data_return
+dont_lose_user_pictures
diff -Nru drupal7-7.32/debian/patches/unicode_for_php_5.6 
drupal7-7.32/debian/patches/unicode_for_php_5.6
--- drupal7-7.32/debian/patches/unicode_for_php_5.6     1969-12-31 
18:00:00.000000000 -0600
+++ drupal7-7.32/debian/patches/unicode_for_php_5.6     2014-11-21 
13:28:18.000000000 -0600
@@ -0,0 +1,34 @@
+Origin: vendor
+Forwarded: not-needed
+From: Gunnar Wolf <gw...@debian.org>
+Last-Update: 2014-11-21
+Description: Fixes Drupal issue #2332295
+ Fixed a bug in the Unicode requirements check which prevented installing 
Drupal on PHP 5.6.
+ .
+ Backported from 7.33.
+
+Index: drupal7/includes/unicode.inc
+===================================================================
+--- drupal7.orig/includes/unicode.inc
++++ drupal7/includes/unicode.inc
+@@ -116,11 +116,15 @@ function _unicode_check() {
+   if (ini_get('mbstring.encoding_translation') != 0) {
+     return array(UNICODE_ERROR, $t('Multibyte string input conversion in PHP 
is active and must be disabled. Check the php.ini 
<em>mbstring.encoding_translation</em> setting. Please refer to the <a 
href="@url">PHP mbstring documentation</a> for more information.', array('@url' 
=> 'http://www.php.net/mbstring')));
+   }
+-  if (ini_get('mbstring.http_input') != 'pass') {
+-    return array(UNICODE_ERROR, $t('Multibyte string input conversion in PHP 
is active and must be disabled. Check the php.ini <em>mbstring.http_input</em> 
setting. Please refer to the <a href="@url">PHP mbstring documentation</a> for 
more information.', array('@url' => 'http://www.php.net/mbstring')));
+-  }
+-  if (ini_get('mbstring.http_output') != 'pass') {
+-    return array(UNICODE_ERROR, $t('Multibyte string output conversion in PHP 
is active and must be disabled. Check the php.ini <em>mbstring.http_output</em> 
setting. Please refer to the <a href="@url">PHP mbstring documentation</a> for 
more information.', array('@url' => 'http://www.php.net/mbstring')));
++  // mbstring.http_input and mbstring.http_output are deprecated and empty by
++  // default in PHP 5.6.
++  if (version_compare(PHP_VERSION, '5.6.0') == -1) {
++    if (ini_get('mbstring.http_input') != 'pass') {
++      return array(UNICODE_ERROR, $t('Multibyte string input conversion in 
PHP is active and must be disabled. Check the php.ini 
<em>mbstring.http_input</em> setting. Please refer to the <a href="@url">PHP 
mbstring documentation</a> for more information.', array('@url' => 
'http://www.php.net/mbstring')));
++    }
++    if (ini_get('mbstring.http_output') != 'pass') {
++      return array(UNICODE_ERROR, $t('Multibyte string output conversion in 
PHP is active and must be disabled. Check the php.ini 
<em>mbstring.http_output</em> setting. Please refer to the <a href="@url">PHP 
mbstring documentation</a> for more information.', array('@url' => 
'http://www.php.net/mbstring')));
++    }
+   }
+ 
+   // Set appropriate configuration

Reply via email to