# HG changeset patch # User Luke Schierer # Date 1053953105 0 # Node ID 10920646988f0e53f0b5194cc91d4857d676d5d5 # Parent 2c4c975620f000f0a4d3f9186e822aa76431008b [gaim-migrate @ 5931] Ambrose LI (acli) writes: " This is w.r.t. the 0.64cvs as of around 20:25 EDT. When gaim starts up, it displays the signon window, and then immeidately segfaults. The problem is that tobase64() in util.c uses a size_t (which could very likely be unsigned) as a second parameter, but proxy.c calls it with a -1. " at my questioning the specific change he made: "Actually the initialization is not the matter (just something I did while debugging and did not remove, since it makes sense in any case), it's the other change that matters. In util.h, the javadoc-like comments states that passing len = -1 means that tobase64() should calculated len = strlen(buf). However, since size_t is (or can be) unsigned, the "if (len < 0)" check never succeeds, so passing -1 actually results in a very large integer being passed. So the "if (len < 0)" check actually need to be changed so that the passed "-1" will actually get recognized." so since most of us aren't segfaulting on start, i'm guessing this is a platform/os specific problem, but that the change shouldn't affect the rest of us anyway. committer: Tailor Script diff -r 2c4c975620f0 -r 10920646988f src/util.c --- a/src/util.c Mon May 26 08:30:48 2003 +0000 +++ b/src/util.c Mon May 26 12:45:05 2003 +0000 @@ -353,10 +353,10 @@ /* This was borrowed from the Kame source, and then tweaked to our needs */ char *tobase64(const unsigned char *buf, size_t len) { - char *s, *rv; + char *s = NULL, *rv = NULL; unsigned tmp; - if(len < 0) + if(len == (size_t)(-1)) len = strlen(buf); s = g_malloc((4 * (len + 1)) / 3 + 1);