? 6-validate.patch
? 6-x-conf-ignore.patch
? 63220-generate.patch
? 632438-views.patch
? 652000-settings-a.patch
? 652000-settings-b.patch
? 685872-pgsql-b.patch
? 685872-unserialize.patch
? 686146-decode-blob.patch
Index: domain.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain.admin.inc,v
retrieving revision 1.41
diff -u -p -r1.41 domain.admin.inc
--- domain.admin.inc	1 Nov 2009 18:20:19 -0000	1.41
+++ domain.admin.inc	30 Jan 2010 20:05:20 -0000
@@ -816,7 +816,7 @@ function domain_batch_form($form_state, 
       }
       // Check for domain-specific settings.
       $result = db_result(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain['domain_id']));
-      $settings = unserialize($result);
+      $settings = domain_unserialize($result);
       if (isset($settings[$action])) {
         $default[$domain['domain_id']] = $settings[$action];
       }
@@ -979,7 +979,7 @@ function domain_batch_form_submit($form,
         if ($key > 0 || empty($form_state['values']['variable'])) {
           $data = db_fetch_array(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $key));
           if (isset($data['settings'])) {
-            $settings = unserialize($data['settings']);
+            $settings = domain_unserialize($data['settings']);
             $settings[$item] = $value;
             db_query("UPDATE {domain_conf} SET settings = %b WHERE domain_id = %d", serialize($settings), $key);
           }
Index: domain.bootstrap.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain.bootstrap.inc,v
retrieving revision 1.10
diff -u -p -r1.10 domain.bootstrap.inc
--- domain.bootstrap.inc	22 Aug 2009 22:30:36 -0000	1.10
+++ domain.bootstrap.inc	30 Jan 2010 20:05:20 -0000
@@ -233,4 +233,3 @@ function domain_get_primary_table($table
   }
   return db_escape_table($table);
 }
-
Index: domain.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain.module,v
retrieving revision 1.134.2.3
diff -u -p -r1.134.2.3 domain.module
--- domain.module	8 Dec 2009 16:57:18 -0000	1.134.2.3
+++ domain.module	30 Jan 2010 20:05:23 -0000
@@ -2357,3 +2357,26 @@ function domain_db_rewrite_sql($query, $
   );
   return $return;
 }
+
+/**
+ * Unserialize an object stored in {domain_*} tables.
+ *
+ * PostGRES has issues with bytea fields, and while this is
+ * handled cleanly in cache_get(), we have our own functions
+ * for retrieving similar data objects. So we must be sure to
+ * unserialize these safely.
+ *
+ * @param $object
+ *   The serialized object.
+ * @return $data
+ *   Properly unserialized data or an empty string if the $object
+ *   contained no data.
+ *
+ * @see http://drupal.org/node/686146
+ */
+function domain_unserialize($object) {
+  if (empty($object)) {
+    return;
+  }
+  return unserialize(db_decode_blob($object));
+}
Index: domain_conf/domain_conf.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain_conf/domain_conf.admin.inc,v
retrieving revision 1.14
diff -u -p -r1.14 domain_conf.admin.inc
--- domain_conf/domain_conf.admin.inc	23 Oct 2009 16:33:21 -0000	1.14
+++ domain_conf/domain_conf.admin.inc	30 Jan 2010 20:05:24 -0000
@@ -47,7 +47,7 @@ function domain_conf_form($form_state, $
   $settings = array();
   $data = db_result(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain['domain_id']));
   if (!empty($data)) {
-    $settings = unserialize($data);
+    $settings = domain_unserialize($data);
   }
 
   $default_group = t('Site configuration');
Index: domain_conf/domain_conf.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain_conf/domain_conf.module,v
retrieving revision 1.53
diff -u -p -r1.53 domain_conf.module
--- domain_conf/domain_conf.module	1 Nov 2009 18:20:19 -0000	1.53
+++ domain_conf/domain_conf.module	30 Jan 2010 20:05:25 -0000
@@ -33,7 +33,7 @@ function domain_conf_domain_bootstrap_fu
   $data = db_fetch_array(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain['domain_id']));
   if (!empty($data)) {
     global $conf;
-    $settings = unserialize($data['settings']);
+    $settings = domain_unserialize($data['settings']);
     // Overwrite the $conf variables.
     foreach ($settings as $key => $value) {
       // Language handling is a special case.
@@ -596,7 +596,7 @@ function domain_conf_block($op = 'list',
 function domain_conf_variable_set($domain_id, $variable, $value = NULL) {
   global $conf, $_domain;
   // Get the current settings for this domain, if any.
-  $settings = unserialize(db_result(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain_id)));
+  $settings = domain_unserialize(db_result(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain_id)));
   // Settings found, update them.
   if (!empty($settings)) {
     $settings[$variable] = $value;
@@ -638,7 +638,7 @@ function domain_conf_variable_get($domai
   }
   if (!isset($settings[$domain_id]) || $reset) {
     // Get the current settings for this domain, if any.
-    $data = unserialize(db_result(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain_id)));
+    $data = domain_unserialize(db_result(db_query("SELECT settings FROM {domain_conf} WHERE domain_id = %d", $domain_id)));
     if (empty($data)) {
       $data = array();
     }
@@ -692,7 +692,7 @@ function _domain_conf_load_primary($unse
     // Load the query.
     $data = db_result(db_query("SELECT data FROM $cache_table WHERE cid = 'variables'"));
     if (!empty($data)) {
-      $settings = unserialize($data);
+      $settings = domain_unserialize($data);
     }
     // If the cache has been cleared, this data will be empty.
     // In this case, grab the data directly from the base {variable} table.
@@ -700,7 +700,7 @@ function _domain_conf_load_primary($unse
       $variable_table = domain_get_primary_table('variable');
       $result = db_query("SELECT name, value FROM $variable_table");
       while ($vars = db_fetch_array($result)) {
-        $data[$vars['name']] = unserialize($vars['value']);
+        $data[$vars['name']] = domain_unserialize($vars['value']);
       }
       $settings = $data;
     }
Index: domain_theme/domain_theme.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain_theme/Attic/domain_theme.admin.inc,v
retrieving revision 1.9
diff -u -p -r1.9 domain_theme.admin.inc
--- domain_theme/domain_theme.admin.inc	11 Oct 2009 14:19:25 -0000	1.9
+++ domain_theme/domain_theme.admin.inc	30 Jan 2010 20:05:26 -0000
@@ -309,7 +309,7 @@ function domain_theme_settings_submit($f
   if (isset($values['domain_color_defaults'])) {
     foreach ($values['domain_color_defaults'] as $key => $value) {
       if (!empty($value)) {
-        variable_set($key, unserialize($value));
+        variable_set($key, domain_unserialize($value));
       }
       else {
         variable_del($key);
Index: domain_theme/domain_theme.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain_theme/Attic/domain_theme.module,v
retrieving revision 1.19
diff -u -p -r1.19 domain_theme.module
--- domain_theme/domain_theme.module	1 Nov 2009 18:20:19 -0000	1.19
+++ domain_theme/domain_theme.module	30 Jan 2010 20:05:26 -0000
@@ -42,7 +42,7 @@ function domain_theme_init() {
 function domain_theme_set_variables($theme) {
   global $conf;
   if (!empty($theme['settings'])) {
-    $settings = unserialize($theme['settings']);
+    $settings = domain_unserialize($theme['settings']);
     $conf['theme_'. $theme['theme'] .'_settings'] = $settings;
     // Account for color module.
     $vars = array('palette', 'stylesheets', 'logo', 'files', 'screenshot');
