? 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');