Potential problem and patch: IMAP 2.2.8
Ken Murchison
ken at oceana.com
Wed Aug 4 09:03:45 EDT 2004
Nikola Milutinovic wrote:
> Hi all.
>
> Cyrus IMAP 2.2.8
> Tru64 UNIX 5.1B
> Native CC
>
> I was just compiling Cyrus IMAP 2.2.8 and due to some other problems
> (Tru64 oddities), I payed close attention to the compilation process. I
> noticed a potentially problematic warning:
>
> cc: Warning: cyrusdb_quotalegacy.c, line 531: In this statement, the
> referenced type of the pointer value "&datalen" is "unsigned long",
> which is not compatible with "int". (ptrmismatch)
> r = myfetch(db, globbuf.gl_pathv[i], &data, &datalen, tid);
> ----------------------------------------------------^
>
> As you can see, a pointer to "long" (actually "size_t") is being passed
> as a pointer to "int". This is problematic on Tru64 UNIX, since size of
> "long" is 64bit, while "int" is 32bit. From my point of view it is
> problematic in any case, so I made a simple patch:
>
> *** lib/cyrusdb_quotalegacy.c.orig Wed Aug 4 13:38:36 2004
> --- lib/cyrusdb_quotalegacy.c Wed Aug 4 13:46:00 2004
> ***************
> *** 526,532 ****
>
> for (i = 0; i < globbuf.gl_pathc; i++) {
> const char *data, *key;
> ! size_t keylen, datalen;
>
> r = myfetch(db, globbuf.gl_pathv[i], &data, &datalen, tid);
> if (r) break;
> --- 526,532 ----
>
> for (i = 0; i < globbuf.gl_pathc; i++) {
> const char *data, *key;
> ! int keylen, datalen;
>
> r = myfetch(db, globbuf.gl_pathv[i], &data, &datalen, tid);
> if (r) break;
>
> I haven't tested it, but I'm sure it will work, while I can't say for
> sure if the unpatched version would work or break. The bug manifesting
> would depend on whether the system is small-endian or big-endian and
> only if "long" and "int" have a different size. I'm not really sure if
> Alpha is big- or small-endian.
Fixed in CVS. Thanks.
--
Kenneth Murchison Oceana Matrix Ltd.
Software Engineer 21 Princeton Place
716-662-8973 x26 Orchard Park, NY 14127
--PGP Public Key-- http://www.oceana.com/~ken/ksm.pgp
---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
More information about the Info-cyrus
mailing list