Hi Sripriya,

What you need is an /*@observer@*/ annotation on get_hname:

/*@observer@*/ const char* get_hname(const u_char *);

Without it, the default /*@only@*/ annotation is assumed for the
declaration of get_hname, and splint complains about an apparent memory
leak when the result of get_hname is passed as a printf parameter:

            printf(" -> who-has %s ",get_hname((const u_char

The const C keyword should be enough to imply this, but Splint doesn't
interpret it.

--- Dave


On Thu, 26 Sep 2002, Sripriya Subramanian wrote:

> Hi all,
>  I am a new user to Splint. I have a Sniffer code on which i am running
> splint. Splint is throwing memory leak problems and I am not able to
> solve it.
>
> /*** util.c ****/
> const char* get_hname(const u_char *ap)
> {
>   const struct hostent *hp;
>   u_int32_t addr;
>   memcpy(&addr, ap, sizeof(addr));
>   if(nflag>0)
>     {
>       hp = gethostbyaddr((char *) &addr, 4, AF_INET);
>       if(hp)
>     return (hp->h_name);
>     }
>   return(get_haddr(addr));
> }
>
> /**** arp.c **** - print arp packets/
> void print_ARP (const u_char *pdata, /*@unused@*/ u_int length)
> {
>   struct ARP_header *arph = (struct ARP_header *)pdata;
> .
> .
> .
>  switch(ntohs(arph->ar_op))
>     {
>     case ARPOP_REQUEST:
>           printf("arp:request");
>           if(vflag>0)
>         {
> *)arph->ar_dpa));
>               printf("tell %s", get_hname((const u_char *)arph->ar_spa));
>           }
>           break;
>
>       default:
>         printf("arp \n");
>         break;
>     }
>  }
>
> arp.c: (in function print_ARP)
> arp.c:22:29: New fresh storage (type char *) passed as implicitly temp (not
>                 released): get_hname((const u_char *)arph->ar_dpa)
>   A memory leak has been detected. Storage allocated locally is not released
>   before the last reference to it is lost. (Use -mustfreefresh to inhibit
>   warning)
>
>
>  Can somebody let me know what sort of annotations will help me in this
> situation and it will be great if somebody can explain me the situation.
>
> Sripriya Subramanian
>

Reply via email to