Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Jul 2013 21:38:03 +0300
From:      Mikolaj Golub <trociny@FreeBSD.org>
To:        Ulrich =?utf-8?B?U3DDtnJsZWlu?= <uqs@FreeBSD.org>, Andre Oppermann <andre@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r253210 - in head/sys: conf netinet
Message-ID:  <20130715183801.GA7630@gmail.com>
In-Reply-To: <20130715093615.GC2294@acme.spoerlein.net>
References:  <201307111529.r6BFTPSf016809@svn.freebsd.org> <20130715093615.GC2294@acme.spoerlein.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jul 15, 2013 at 11:36:16AM +0200, Ulrich Spörlein wrote:
> Hey Andre,
> 
> I don't see why this commit triggers it, but Coverity Scan found a new
> resource leak in this file. syncache_expand() will leak *s when line
> 1071 is reached. The "failed:" case below correctly frees the resources.
> 
> 1068/* how do we find the inp for the new socket? */
>         22. Condition "sc != &scs", taking true branch
> 1069        if (sc != &scs)
> 1070                syncache_free(sc);
>         
> CID null (#1 of 1): Resource leak (RESOURCE_LEAK)
> 23. leaked_storage: Variable "s" going out of scope leaks the storage it points to.
> 1071        return (1);
> 1072failed:
> 1073        if (sc != NULL && sc != &scs)
> 1074                syncache_free(sc);
> 1075        if (s != NULL)
> 1076                free(s, M_TCPLOG);
> 1077        *lsop = NULL;
> 1078        return (0);
> 1079}

It looks like free(s, M_TCPLOG) is missed in this branch:

  1043		if ((sc->sc_flags & SCF_TIMESTAMP) && !(to->to_flags & TOF_TS)) {
  1044			if ((s = tcp_log_addrs(inc, th, NULL, NULL)))
  1045				log(LOG_DEBUG, "%s; %s: Timestamp missing, "
  1046				    "no action\n", s, __func__);
  1047		}


-- 
Mikolaj Golub



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130715183801.GA7630>