Yea I think I missed the fact that tp isn't getting enough of the packet
to handle options.  I don't think we can copy more into tp because we
don't know and may not have options at that point.  I think we'll need to
memcpy a new tcpheader+options inside the SYN loop.  Or maybe just
memcpy the options to a new pointer?  I'll try and test something
today.
-Chris
> 
> struct tcphdr defines the tcp/ip standard header.  Following that is up to
> 40 bytes of 'options'.  Since the def of tp is 'struct tcphdr tp;', any
> reference using it into the opts will be seen as an uninitialized reference.
> 
> I've been routinely applying Chris' patch for the un-aligned moves/sparc
> problem, and that may be what Valgrind is catching.  He changes the
> definitions to:
> 
> -                 u_char *opt_ptr = tcp_opt;
> +                 u_char *opt_ptr = (u_char *)((struct tcphdr*)&tp + 1);
> +                 u_char *tcp_data =
> +                    (u_char *)((struct tcphdr*)&tp + tp.th_off * 4);
> 
> I just don't know - it's not clear how deep valgrind goes with it's
> analysis - it could be that it sees the 24 byte header being overflowed or
> it could be picking up something else about the code.
> 
> Since you're going to be in there anyway, looking at Chris' patch, I wanted
> you to look at it and make sure the code is ok.
> 
> 
> Once you're sure that the code is right, I'll try and code a suppress for
> Valgrind for this.
> 
> -----Burton
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf
> Of Luca Deri
> Sent: Thursday, September 11, 2003 3:53 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [Ntop-dev] VALGRIND bug report
> 
> 
> Burton,
> I can't follow you here. opt_ptr is the problem right? If so:
> 
> struct tcphdr *tcp = (struct tcphdr*)(bp+hlen);
> u_char *tcp_opt = (u_char *)(tcp + 1);
> u_char *opt_ptr = tcp_opt;
> 
> In the above statements I can't see tp being used at all, so I don't
> understand the memcpy problem.
> 
> Please explain.
> 
> Rgds, Luca
> 
> Burton M. Strauss III wrote:
> 
> >==922== Thread 2:
> >==922== Conditional jump or move depends on uninitialised value(s)
> >==922==    at 0x402AA52A: processIpPkt (pbuf.c:975)
> >==922==    by 0x402AD189: processPacket (pbuf.c:2513)
> >==922==    by 0x402AB37C: dequeuePacket (pbuf.c:1735)
> >==922==    by 0x4045B5C2: thread_wrapper (vg_libpthread.c:667)
> >==922==
> >==922== Thread 2:
> >==922== Use of uninitialised value of size 4
> >==922==    at 0x402AA536: processIpPkt (pbuf.c:975)
> >==922==    by 0x402AD189: processPacket (pbuf.c:2513)
> >==922==    by 0x402AB37C: dequeuePacket (pbuf.c:1735)
> >==922==    by 0x4045B5C2: thread_wrapper (vg_libpthread.c:667)
> >
> >
> >     if(srcHost->fingerprint == NULL) {
> >        char fingerprint[64];
> >        int WIN=0, MSS=-1, WS=-1, S=0, N=0, D=0, T=0;
> >        int ttl;
> >        char WSS[3], _MSS[5];
> >
> >        if (tp.th_flags & TH_SYN)   /* only SYN or SYN-2ACK packets */
> >          {
> >...
> >                  while(opt_ptr < tcp_data)
> >                    {
> >
> >
> >>>>                  switch(*opt_ptr)
> >>>>
> >>>>
> >                        {
> >...
> >                        }
> >                    }
> >                }
> >...
> >      }
> >
> >
> >Luca, I think valgrind is right, because the set of tp is this:
> >
> >      memcpy(&tp, bp+hlen, sizeof(struct tcphdr));
> >
> >(pbuf.c @ 921), which doesn't copy any of the option fields.  We should
> >probably add 40 bytes (that's the maximum length of the options field) to
> >that memcpy...
> >
> >-----Burton
> >
> >_______________________________________________
> >Ntop-dev mailing list
> >[EMAIL PROTECTED]
> >http://listgateway.unipi.it/mailman/listinfo/ntop-dev
> >
> >
> 
> 
> --
> Luca Deri <[EMAIL PROTECTED]> http://luca.ntop.org/
> Hacker: someone who loves to program and enjoys being
> clever about it - Richard Stallman
> 
> 
> _______________________________________________
> Ntop-dev mailing list
> [EMAIL PROTECTED]
> http://listgateway.unipi.it/mailman/listinfo/ntop-dev
> 
> _______________________________________________
> Ntop-dev mailing list
> [EMAIL PROTECTED]
> http://listgateway.unipi.it/mailman/listinfo/ntop-dev
> 


-- 
[EMAIL PROTECTED]           Chris Turbeville                       NTT/VERIO
       Send mail with subject "send PGP Key" for PGP 6.5.2 Public key
_______________________________________________
Ntop-dev mailing list
[EMAIL PROTECTED]
http://listgateway.unipi.it/mailman/listinfo/ntop-dev

Reply via email to