Am 16.01.2010 um 19:00 schrieb Thomas Stüfe: > Greetings, > > I think I found a small bug in sqlite 3.6.22 in the function > proxyGetHostID(). > > There, pread() and pwrite() are used to read a host id file. Return > value of these functions is assigned to a size_t variable. size_t is > unsigned. Should pread fail for any reason (IO Error or whatever) > and return -1, the error handling would not kick in. Instead, the > function would probably just leave the host id uninitialized and > return ok. > > A valid fix might be using ssize_t (signed size_t) instead of > size_t, but I cannot of course say whether this would work on all > platforms.
AFAICS, this is for Mac OS X only anyway... pread returns an ssize_t according to the docs, so the proposed change looks safe to me... Another potential problem is when for some reason the hostid file is empty: in this case pread will return 0, which will leave pHostID uninitialized, too. It will return a result code, but the OSTRACE3 inside proxyGetHostID still attempts to dump the host ID, which at this point will be uninitialized. > > My Platform is MacOS X, I compile with gcc 4.2. I compile the > amalgamation for sqlite 3.6.22. I only found this because gcc warns: > > sqlite3.c:26120: warning: comparison of unsigned expression < 0 is > always false > sqlite3.c:26134: warning: comparison of unsigned expression < 0 is > always false </jum> _______________________________________________ sqlite-users mailing list [email protected] http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

