The root of the problem seems to be that builtin_timezone entries kept
as pointers into an "icalarray". But the icalarray is "expanded" by
being moved to a new location and the old location freed, making the
previous builtin_timezone pointers invalid.

==4519== Invalid read of size 8
==4519==    at 0xE6FEB46: icaltimezone_get_utc_offset_of_utc_time 
(icaltimezone.c:981)
==4519==    by 0xE6FE652: icaltimezone_convert_time (icaltimezone.c:794)
==4519==    by 0xE6F9EE0: icaltime_from_timet_with_zone (icaltime.c:224)
==4519==    by 0x18810169: tag_calendar_cb (tag-calendar.c:120)
==4519==    by 0x932B1E7: process_instances (e-cal-client.c:1961)
==4519==    by 0x932B314: generate_instances_for_object_got_objects_cb 
(e-cal-client.c:1992)
==4519==    by 0x932A799: got_objects_for_uid_cb (e-cal-client.c:1711)
==4519==    by 0x626CC16: g_simple_async_result_complete (in 
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0)
==4519==    by 0x5536C5B: finish_async_op (e-client.c:2281)
==4519==    by 0x5536F55: async_result_ready_cb (e-client.c:2318)
==4519==    by 0x626CC16: g_simple_async_result_complete (in 
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0)
==4519==    by 0x626CD28: ??? (in 
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.3000.0)
==4519==  Address 0x1c11c8d8 is 29,928 bytes inside a block of size 29,952 
free'd
==4519==    at 0x4C282E0: free (vg_replace_malloc.c:366)
==4519==    by 0xE6E8E5E: icalarray_expand (icalarray.c:159)
==4519==    by 0xE6E8BE8: icalarray_append (icalarray.c:89)
==4519==    by 0xE6FF54A: icaltimezone_get_builtin_timezone 
(icaltimezone.c:1414)
==4519==    by 0xE6FF8A6: icaltimezone_get_builtin_timezone_from_tzid 
(icaltimezone.c:1525)
==4519==    by 0xE6EC18F: icalcomponent_get_datetime (icalcomponent.c:1566)
==4519==    by 0xE6EC28A: icalcomponent_get_dtstart (icalcomponent.c:1594)
==4519==    by 0x187FB7EA: ensure_dates_are_in_default_zone (gnome-cal.c:744)
==4519==    by 0x187FBA21: dn_client_view_objects_added_cb (gnome-cal.c:773)
==4519==    by 0x65560A3: g_closure_invoke (in 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0)
==4519==    by 0x6568029: ??? (in 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0)
==4519==    by 0x65716B0: g_signal_emit_valist (in 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3000.0)


** Summary changed:

- Race condition in timezone handling causes crash
+ Access to freed memory in timezone handling causes crash

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/956843

Title:
  Access to freed memory in timezone handling causes crash

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/evolution/+bug/956843/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to