Hi Albrecht,

On 05/27/2016 04:20:31 PM Fri, Albrecht Dreß wrote:
Hi all,

attached is a patch which fixes accessing MBox files > 2 GByte.  See [1] for a 
description of the symptoms.  The patch should be usable for both the Gtk-2 and 
Gtk-3 branches.

The bug is caused by blindly mixing various integer types with different sizes in the 
Balsa code, in particular int/gint, off_t, ssize_t/size_t and gint64, when using 
g_mime_stream_* functions.  On a POSIX system, run 'getconf -a | grep 
"_POSIX_V7_.*1$"' to see which definition from [2] applies.

In any case, on POSIX int/gint is *always* 32 bits, which explains the bug.  
Otoh, off_t /should/ always be 64 bits if glibc is used(at least if 
_FILE_OFFSET_BITS is defined as 64), so it /may/ be mixed with gint64 (which is 
*guaranteed* to be 64 bits in any case).  Both size_t and ssize_t will 
typically be 32 bits on a 32 bit system, and 64 on a 64 bit system.

On other systems, results may be completely different, as ISO9899 does not 
define sizes.

I guess there are more "fishy" data type mixtures than the few I found to fix 
the particular bug.  Maybe time to run a good static analyser like FlexeLint against the 
Balsa code to find these issues (which would be a huge task, though)...

Opinions?

Thanks for the analysis of the problem, and for the patch! Pushed to both 
branches (but not tested on master, as I can no longer build it).

Best,

Peter

Attachment: pgpCyy_pRr2IX.pgp
Description: PGP signature

_______________________________________________
balsa-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/balsa-list

Reply via email to