The default vsnprintf in solaris 8 (when using the default compiler) is broken (in that when you pass in NULL as the destination is automatically returns 0). This causes lp_string to fail and random segfaults to occur (in winbind particularly. The solution I used (to try and get) was to modify vasprintf to call dopr directly (since the cc linker seems to always default to the standard one). Once this is done, everything seems to work perfectly.
*** source/lib/snprintf.c~ Fri Nov 7 09:37:35 2003 --- source/lib/snprintf.c Mon Feb 9 20:34:24 2004 *************** *** 852,858 **** --- 852,862 ---- VA_COPY(ap2, ap); + #ifdef SUNOS5 + ret = dopr(NULL, 0, format, ap2); + #else ret = vsnprintf(NULL, 0, format, ap2); + #endif if (ret <= 0) return ret; (*ptr) = (char *)malloc(ret+1);
Created attachment 587 [details] use builtin vsnprintf consistently I believe this problem is present in any system that doesn't do unix98 snprintf by default. This includes IRIX and (I guess) Solaris.
I think you need to also need to change the "vsnprintf" function on line snprintf.c:824 to "smb_vsnprintf" for the given patch to work.
You also need to modify talloc.c to replace vsnprintf with smb_vsnprintf; otherwise, talloc_asnprintf fails miserably.
James, did your patch get applied. Can we close this one ?
fixed in 3.0.6 according to the release notes.
sorry for the same, cleaning up the database to prevent unecessary reopens of bugs.