diff --git a/plugins/libkolab/lib/kolab_storage_cache_contact.php b/plugins/libkolab/lib/kolab_storage_cache_contact.php
index d526a0e7..70aa5f62 100644
--- a/plugins/libkolab/lib/kolab_storage_cache_contact.php
+++ b/plugins/libkolab/lib/kolab_storage_cache_contact.php
@@ -23,8 +23,9 @@
class kolab_storage_cache_contact extends kolab_storage_cache
{
- protected $extra_cols = array('type','name','firstname','surname','email');
- protected $binary_items = array(
+ protected $extra_cols_max = 255;
+ protected $extra_cols = array('type','name','firstname','surname','email');
+ protected $binary_items = array(
'photo' => '|[^;]+;base64,([^<]+)|i',
'pgppublickey' => '|data:application/pgp-keys;base64,([^<]+)|i',
'pkcs7publickey' => '|data:application/pkcs7-mime;base64,([^<]+)|i',
@@ -59,6 +60,13 @@ class kolab_storage_cache_contact extends kolab_storage_cache
$sql_data['name'] = rcube_charset::clean($object['organization']);
}
+ // make sure some data is not longer that database limit (#5291)
+ foreach ($this->extra_cols as $col) {
+ if (strlen($sql_data[$col]) > $this->extra_cols_max) {
+ $sql_data[$col] = rcube_charset::clean(substr($sql_data[$col], 0, $this->extra_cols_max));
+ }
+ }
+
return $sql_data;
}
}
\ No newline at end of file