Created attachment 3381 patch against src/tz_zoneinfo_read.c I've tried the commit http://git.xfce.org/apps/orage/commit/?id=f3dc96f59c14bb58c2ff4dd443f86d851add4f32 but it still fails to build, as the #ifdef FTW_ACTIONRETVAL doesn't include the FTW_SKIP_SUBTREE in line 1480. moving it above made orage finally build, and tz_convert correctly parses the 1790 tz. Crashes when trying to change timezone, as it's looking for iso3166.tab file in zoneinfo/ subdir, whereas it's in misc/ on OpenBSD (NetBSD has it in zoneinfo, FreeBSD doesn't ship iso3166.tab). I've patched read_countries() in tz_zoneinfo_read.c to strcat 'misc/' instead of 'zoneinfo/' into tz_dir, and it works fine. Orage: Processed 1790 timezone files from (/usr/share/zoneinfo) read_countries: iso3166.tab file open failed (/usr/share/zoneinfo/iso3166.tab) fopen: No such file or directory With the attached patches, orage 4.8.0 finally works fine here, although i get some warnings at startup (dunno where the markup errors come from): ** (orage:23695): WARNING **: get_first_weekday: Can not find first weekday. Using default: Monday=0. If this is wrong guess. please set undocumented parameter: Ical week start day (Sunday=6) (orage:23695): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Erreur à la ligne 1, caractère 51 : L'élément « markup » a été fermé, mais l'élément actuellement ouvert est « b » (orage:23695): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Erreur à la ligne 1, caractère 51 : L'élément « markup » a été fermé, mais l'élément actuellement ouvert est « b »
Created attachment 3382 patch against tz_convert/tz_convert.c
Panel plugin also crashes when i try to change timezone in plugin properties. There's a buffer overflow in get_orage_timezones() Program received signal SIGSEGV, Segmentation fault. [Switching to process 24664, thread 0x865b7800] 0x1c009fb3 in file_call (file_name=0x88b19800 "/usr/share/zoneinfo/posix/Europe/London", sb=0x88715450, flags=0, f=0xcfbd7bac) at ../src/tz_zoneinfo_read.c:429 429 tz_array.city[tz_array.count] = strdup(in_timezone_name); (gdb) p tz_array.count $1 = 1004 Setting tz_array_size to 2000 of course fixes it, but it's a big gross.
Thanks! I donot have BSD test system, so fixing these is not easy. I will look this soon.
Setting tz_array_size to 2000 instead 1000 costs about 20kB memory, which is not a big deal. Not sure how to fix iso3166.tab handling as it can be in several places.
(In reply to comment #4) > Setting tz_array_size to 2000 instead 1000 costs about 20kB memory, which is > not a big deal. Yeah, best fix would be to dynamically malloc it, as your comment states :) > Not sure how to fix iso3166.tab handling as it can be in several places. #ifdef __OpenBSD__ would be the simplest imo, as for FreeBSD i have no idea.
Fixed in 4.8.0.4 available in git. Hopefully it works now.
Fixed in 4.8.1