From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754081AbcEJC6Z (ORCPT ); Mon, 9 May 2016 22:58:25 -0400 Received: from mail.kernel.org ([198.145.29.136]:54101 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753917AbcEJC6X (ORCPT ); Mon, 9 May 2016 22:58:23 -0400 Date: Tue, 10 May 2016 11:58:18 +0900 From: Masami Hiramatsu To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Namhyung Kim , Peter Zijlstra , Ingo Molnar Subject: Re: [PATCH perf/core v2 5/8] perf header: Make topology checkers to check return value of strbuf Message-Id: <20160510115818.8c10904a288b51463de9ef35@kernel.org> In-Reply-To: <20160505235518.GP11069@kernel.org> References: <20160429150941.30063.62888.stgit@devbox> <20160429151033.30063.91049.stgit@devbox> <20160505235518.GP11069@kernel.org> X-Mailer: Sylpheed 3.4.3 (GTK+ 2.24.28; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 5 May 2016 20:55:18 -0300 Arnaldo Carvalho de Melo wrote: > Em Sat, Apr 30, 2016 at 12:10:33AM +0900, Masami Hiramatsu escreveu: > > Make topology checkers to check the return value of strbuf > > APIs so that it can detect errors in it. > > > } > > @@ -1907,7 +1910,7 @@ static int process_numa_topology(struct perf_file_section *section __maybe_unuse > > u32 nr, node, i; > > char *str; > > uint64_t mem_total, mem_free; > > - struct strbuf sb; > > + struct strbuf sb = STRBUF_INIT; > > Since you're going to call strbuf_init() later, is the above really > needed? Actually, this is for strbuf_release() at the error path at the end of this function. ---- error: strbuf_release(&sb); return -1; } ---- So, without initializing sb, strbuf_release tries to release random address in sb.buf. Of course we can just return -1 for such cases and avoid initializing :) > > > /* nr nodes */ > > ret = readn(fd, &nr, sizeof(nr)); > > @@ -1918,7 +1921,8 @@ static int process_numa_topology(struct perf_file_section *section __maybe_unuse > > nr = bswap_32(nr); > > > > ph->env.nr_numa_nodes = nr; > > - strbuf_init(&sb, 256); > > + if (strbuf_init(&sb, 256) < 0) > > + goto error; > > -- Masami Hiramatsu