On Thu, Mar 10, 2005 at 03:36:45AM +0100, christophe wrote:
> > Hmm ... that is curious. I wonder if the 4096-byte stack buffer is
> > too large for your system. Could you try changing:
>
> If that has something to do with my system, I can precise it's an ibook
> first generation (clamshell) with a G3 366 MHz and 128 M Ram.
Thanks for the report. I think the problem is that I used
varargs/vsnprintf in a non-portable way. You must reset the va_list
between calls to vsnprintf. Here is a patch, which will be in the
next version of Nmap:
--- output.cc (revision 2656)
+++ output.cc (working copy)
@@ -523,9 +523,10 @@
bool buf_alloced = false;
int rc = 0;
- va_start(ap, fmt);
if (l & LOG_STDOUT) {
+ va_start(ap, fmt);
vfprintf(o.nmap_stdout, fmt, ap);
+ va_end(ap);
l-=LOG_STDOUT;
}
if (l & LOG_SKID_NOXLT) { skid=0; l -= LOG_SKID_NOXLT; l |= LOG_SKID; }
@@ -534,7 +535,9 @@
{
if (!o.logfd[i] || !(l&1)) continue;
while(1) {
+ va_start(ap, fmt);
rc = vsnprintf(buf,bufsz, fmt, ap);
+ va_end(ap);
if (rc >= 0 && rc < bufsz)
break; // Successful
// D'oh! Apparently not enough space - lets try a bigger buffer
@@ -545,7 +548,6 @@
if (skid && ((1<<i)&LOG_SKID)) skid_output(buf);
fwrite(buf,1,strlen(buf),o.logfd[i]);
}
- va_end(ap);
if (buf_alloced)
free(buf);
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]