Hi,

On Tue, Jan 08, 2013 at 08:18:11PM -0200, Gustavo Sverzut Barbieri wrote:
> Hi Lutin,
> 
> both seem correct to me. Let's wait for others to chime in, but they should
> be okay.
> 
> 
> On Tue, Jan 8, 2013 at 8:11 PM, Albin Tonnerre <[email protected]> wrote:
> 
> > Hi,
> >
> > I recently uploaded Eet 1.7.4 to Debian; this was the first version to
> > have the testsuite enabled and to my suprise, it failed on all
> > bigendian architectures
> > (https://buildd.debian.org/status/package.php?p=eet&suite=experimental)
> >
> > I tried to find the cause of the issue, and it would seem there's a
> > code path in eet_data_image_lossless_compressed_convert that fails to
> > appropriately convert the input data to little endian before
> > compressing it; this data is then uncompressed in
> > _eet_data_image_decode_inside and, on bigend machines, converted
> > "back" to bigend which obviously yields incorrect results.
> >
> > I've used the following patch to solve the issue, but since I'm no eet
> > expert I'd gladly appreciate any input :)
> >
> > diff --git a/src/lib/eet_image.c b/src/lib/eet_image.c
> > index 7116a3c..5a37bf2 100644
> > --- a/src/lib/eet_image.c
> > +++ b/src/lib/eet_image.c
> > @@ -746,13 +746,26 @@ eet_data_image_lossless_compressed_convert(int
> >       *size,
> >
> >     {
> >        unsigned char *d, *comp;
> > -      int *header, ret, ok = 1;
> > +      int *header, *bigend_data, ret, ok = 1;
> >        uLongf buflen = 0;
> >
> >        buflen = (((w * h * 101) / 100) + 3) * 4;
> >        ret = LZ4_compressBound((w * h * 4));
> >        if ((ret > 0) && ((uLongf)ret > buflen)) buflen = ret;
> > -
> > +
> > +      if (_eet_image_words_bigendian)
> > +        {
> > +           int i;
> > +           int *bigend_data = (int *) malloc(w * h * 4);


Shadowed declaration of bigend_data here.


> > +
> > +           if (!bigend_data) return NULL;
> > +
> > +           memcpy(bigend_data, data, w * h * 4);
> > +           for (i = 0; i < w * h; i++) SWAP32(bigend_data[i]);
> > +
> > +           data = (const char *) bigend_data;
> > +        }
> > +
> >        comp = malloc(buflen);
> >        if (!comp) return NULL;
> >
> > @@ -803,6 +816,7 @@ eet_data_image_lossless_compressed_convert(int
> >     *size,
> >             unsigned int i;
> >
> >             for (i = 0; i < 8; i++) SWAP32(header[i]);
> > +           free(bigend_data);
> >          }
> >
> >        memcpy(d + (8 * sizeof(int)), comp, buflen);
> >
> >
> >
> > On a related matter, the testsuite also dies with SIGBUS on SPARC due
> > to what seems to be an arbitrarily-aligned void* used as an int* in
> > eet_cipher. The following patch fixes the issue for me:
> >
> > diff --git a/src/lib/eet_cipher.c b/src/lib/eet_cipher.c
> > index 3317538..4e1433c 100644
> > --- a/src/lib/eet_cipher.c
> > +++ b/src/lib/eet_cipher.c
> > @@ -706,9 +706,13 @@ eet_identity_check(const void   *data_base,
> >       return NULL;
> >
> >     /* Get the header */
> > -   magic = ntohl(header[0]);
> > -   sign_len = ntohl(header[1]);
> > -   cert_len = ntohl(header[2]);
> > +   memcpy(&magic,    header, sizeof(int));
> > +   memcpy(&sign_len, header+1, sizeof(int));
> > +   memcpy(&cert_len, header+2, sizeof(int));
> > +
> > +   magic = ntohl(magic);
> > +   sign_len = ntohl(sign_len);
> > +   cert_len = ntohl(cert_len);
> >
> >     /* Verify the header */
> >     if (magic != EET_MAGIC_SIGN)
> >
> >
> > Please let me know if you want me to rework the patches, submit them
> > with ChangeLog entries for the stable releases or whatever :)
> >
> > Cheers,
> > --
> > Albin
> >
> >
> > ------------------------------------------------------------------------------
> > Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
> > and more. Get SQL Server skills now (including 2012) with LearnDevNow -
> > 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
> > SALE $99.99 this month only - learn more at:
> > http://p.sf.net/sfu/learnmore_122512
> > _______________________________________________
> > enlightenment-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> 
> 
> 
> -- 
> Gustavo Sverzut Barbieri
> http://profusion.mobi embedded systems
> --------------------------------------
> MSN: [email protected]
> Skype: gsbarbieri
> Mobile: +55 (19) 9225-2202
> ------------------------------------------------------------------------------
> Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
> and more. Get SQL Server skills now (including 2012) with LearnDevNow -
> 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
> SALE $99.99 this month only - learn more at:
> http://p.sf.net/sfu/learnmore_122512
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

-- 
Leandro Dorileo
ProFUSION embedded systems
http://profusion.mobi

------------------------------------------------------------------------------
Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery
and much more. Keep your Java skills current with LearnJavaNow -
200+ hours of step-by-step video tutorials by Java experts.
SALE $49.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122612 
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to