JodliDev / calendar

GNU Affero General Public License v3.0
16 stars 12 forks source link

some special characters in calendar names get HTML-escaped and grow in length (until they outgrow the varchar(255) limit) of name in caldav_calendars #14

Open chaos-prevails opened 2 years ago

chaos-prevails commented 2 years ago

Hello,

calendars which have special characters in their name have these special characters HTML-escaped. That would only be a cosmetical error. However, they also grow over time until the name is too long for the name attribute in caldav_calendars.

In my case (using SOGo as backend), this is an issue with calendars shared with the user. They have the following syntax:

calendar_name (sharer <email-of-sharer@mydomain.org>)

1) I add/predefine a Caldav source, and one calendar with special characters shows up as calendar_name (sharer &amp;lt;sharer@mydomain.net&amp;gt;) instead of calendar_name (sharer <sharer@mydomain.net>) 2) with every refresh the calendar name receives one more amp;, e.g. calendar_name (sharer &amp;amp;amp;amp;amp;amp;amp;lt;sharer@mydomain.net&amp;amp;amp;amp;amp;amp;amp;gt;) 3) after X refreshes calendar_name exceeds the length of the name attribute in caldav_calendars, and I get:

<b7avtkja> caldav_driver: Event 565B964853CAEA506ECDF0BBCF5C6534-1CB5DAFE4E2ABC8E needs update.
May 19 18:08:55 mail roundcube: PHP Warning:  array_merge(): Expected parameter 1 to be an array, null given in /opt/www/roundcubemail/plugins/calendar/drivers/caldav/caldav_driver.php on line 2253
May 19 18:08:55 mail roundcube: <b7avtkja> caldav_driver: Could not perform event creation: Array
May 19 18:08:55 mail roundcube: (
May 19 18:08:55 mail roundcube:     [url] => /SOGo/dav/it5@mydomain.net/Calendar/sharer_A_mydomain_D_net_314CFB-62837A00-11-32540100/
May 19 18:08:55 mail roundcube:     [etag] => None
May 19 18:08:55 mail roundcube: )
May 19 18:08:55 mail roundcube: 
May 19 18:08:55 mail roundcube: <b7avtkja> caldav_driver: Created 0 new events, updated 1 event.
May 19 18:08:55 mail roundcube: <b7avtkja> DB Error: [1406] Data too long for column 'name' at row 1 (SQL Query: UPDATE caldav_calendars
May 19 18:08:55 mail roundcube:             SET   name='calendar_name (sharer &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;sharer@mydomain.net&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;)', color='AAAAAA', showalarms='0'
May 19 18:08:55 mail roundcube:             WHERE calendar_id='68'
May 19 18:08:55 mail roundcube:             AND   user_id='5') in /opt/www/roundcubemail/program/lib/Roundcube/rcube_db.php on line 566 (GET /mail/?_task=calendar&source=68&_action=load_events&start=2022-05-16T00%3A00%3A00&end=2022-05-23T00%3A00%3A00&_=1652976535324)
May 19 18:08:55 mail roundcube: <b7avtkja> caldav_driver: Successfully synced calendar id "68".
May 19 18:09:01 mail CRON[3361414]: (root) CMD (/bin/bash /usr/local/bin/fail2ban_banned_db unban_db)
May 19 18:09:01 mail systemd[1]: Starting Clean php session files...
May 19 18:09:01 mail CRON[3361419]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
May 19 18:09:01 mail CRON[3361451]: (sogo) CMD (/usr/sbin/sogo-tool expire-sessions 30 >/dev/null 2>&1; /usr/sbin/sogo-ealarms-notify >/dev/null 2>&1)
May 19 18:09:01 mail systemd[1]: phpsessionclean.service: Succeeded.
May 19 18:09:01 mail systemd[1]: Finished Clean php session files