? 6-validate.patch
? 6-x-conf-ignore.patch
? 632220-domain-DRUPAL-6--2-dev.patch
? 632220-domain-generate.patch
? 652000-settings-b.patch
? 686146-decode-blob.patch
? 698566-domain-content.patch
? 706490-form.patch
? 710712-vbo.patch
? domain_content/README-698568.txt.patch
? domain_content/contributions-modules-domain-698566.patch
Index: domain.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain.admin.inc,v
retrieving revision 1.41.2.1
diff -u -p -r1.41.2.1 domain.admin.inc
--- domain.admin.inc	11 Feb 2010 20:04:36 -0000	1.41.2.1
+++ domain.admin.inc	11 Feb 2010 22:21:45 -0000
@@ -823,7 +823,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];
       }
@@ -986,7 +986,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.2.2
diff -u -p -r1.10.2.2 domain.bootstrap.inc
--- domain.bootstrap.inc	11 Feb 2010 20:04:36 -0000	1.10.2.2
+++ domain.bootstrap.inc	11 Feb 2010 22:21:46 -0000
@@ -240,3 +240,25 @@ function domain_get_primary_table($table
   return db_escape_table($table);
 }
 
+/**
+ * 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	11 Feb 2010 22:21:49 -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.2.1
diff -u -p -r1.53.2.1 domain_conf.module
--- domain_conf/domain_conf.module	31 Jan 2010 22:37:26 -0000	1.53.2.1
+++ domain_conf/domain_conf.module	11 Feb 2010 22:21:50 -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.
@@ -597,7 +597,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;
@@ -639,7 +639,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();
     }
@@ -693,7 +693,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.
@@ -701,7 +701,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	11 Feb 2010 22:21:51 -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	11 Feb 2010 22:21:52 -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');
