Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp617241pxx; Mon, 26 Oct 2020 17:03:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8TXIg0lXtsHnPGcnJ2sPCR9rWdSx9K9xpgXLqQyJO2yyPhnLUwoOZlaYjYhYvbj3S1Vka X-Received: by 2002:a17:907:20d9:: with SMTP id qq25mr18059187ejb.149.1603756998025; Mon, 26 Oct 2020 17:03:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603756998; cv=none; d=google.com; s=arc-20160816; b=ewoO6SVLqu867sMiyDllvT72m6Q+4k/jL6RD0bjxz+qwLTG9zZvPpkIlHvwYSDB0+/ ma5w25ezR/AbN4HsNUe9IzodJiNBf7a6VTQv5GEwmQ2zKHddzj+4tIXfy+R3J+ZE4tpd OY73Rrozc/12qSPO6jLldwzYVNzoVHT3SuHSX+hftqg36ddDZKHQrZmqBIsjfPvOa5kG 7gYATbSWwOiyw5rT61CyatFpAbxwR9bKjzXDJwDrzzGL6Fo/sUPONbzPjNhRC3jYNj6n TKpat0EpzVt8eWQbBLD+Mn4zQ39gZvyNl7uGv0+Jqra6XciL5mXNCuyQeh5wuy654x+z 0NVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:ironport-sdr:ironport-sdr; bh=SAFnYh8e3g4/iXih/StkWdxtaf42lwYY8iP9MQ+lyJw=; b=UyDz0pPseMsaoKz+lU0iVQihBlEYxOH3jJsKMXtZFEmL+F0IhRBaa58VOE7GFGuZUZ pq38W5gEqtPiX2TiI1N+zCPzq3IeSnjVfuq1lRYBWpAGNKrKPKP3gsuegiEgTg+fxUEl Ihh0q5F17LRF+aDICScyl4KEmIcQfmMDOjV5V6nuRfKPlyyLxxER48mYUMFNQcy+uw+b Wq6ehW6cINXdRCmZwNH5AnEBAtX4EJrXme6jx3QdSCQ14ub3jgVXpJJspubpQt2FfTPa UPyDqVuIQ2F6w+G9dsHiMxHuVzQah/ET5GuP62YL0i+uiSwJQyjCTtqRwccRcd9hPprZ AMrw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n6si5196925edi.165.2020.10.26.17.02.54; Mon, 26 Oct 2020 17:03:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730074AbgJZVIa (ORCPT + 99 others); Mon, 26 Oct 2020 17:08:30 -0400 Received: from mga02.intel.com ([134.134.136.20]:1560 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730063AbgJZVIa (ORCPT ); Mon, 26 Oct 2020 17:08:30 -0400 IronPort-SDR: /kmg4pSvuORwZNpHqGXqsBJR/p5a6j/NIkGYQYHGNZwzi+ra2om/lYHb8KxaquwOOBxAEQfwRR m1FWhjgBpU9w== X-IronPort-AV: E=McAfee;i="6000,8403,9786"; a="154955076" X-IronPort-AV: E=Sophos;i="5.77,421,1596524400"; d="scan'208";a="154955076" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Oct 2020 14:08:29 -0700 IronPort-SDR: HmZtGX/T01X0S+X2JjhiTI4oJ7zTWwL15IkACLltg+LM8co4F7JO6WMcxUXjl2eRNCB3XtCn/0 kjiaaVdRFx+Q== X-IronPort-AV: E=Sophos;i="5.77,421,1596524400"; d="scan'208";a="535513164" Received: from magarris-mobl1.amr.corp.intel.com (HELO ingas-nuc1.intel.com) ([10.212.167.33]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Oct 2020 14:08:28 -0700 From: Inga Stotland To: linux-bluetooth@vger.kernel.org Cc: brian.gix@intel.com, Inga Stotland Subject: [PATCH BlueZ] tools/mesh-cfgclient: Fix errors found by static analysis Date: Mon, 26 Oct 2020 14:08:17 -0700 Message-Id: <20201026210817.50167-1-inga.stotland@intel.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org This fixes a NULL pointer dereference error in subscription_cmd(). Also re-order calling sequence for l_free() & l_queue_remove() in msg_recvd(): even though technically it is not a bug to pass a value of a freed pointer to l_queue_remove(), it's a poor form and confuses the analyzer. --- tools/mesh/cfgcli.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tools/mesh/cfgcli.c b/tools/mesh/cfgcli.c index 1c20db85a..d8eee4edc 100644 --- a/tools/mesh/cfgcli.c +++ b/tools/mesh/cfgcli.c @@ -410,8 +410,8 @@ static bool msg_recvd(uint16_t src, uint16_t idx, uint8_t *data, req = get_req_by_rsp(src, opcode); if (req) { cmd = req->cmd; - free_request(req); l_queue_remove(requests, req); + free_request(req); } else cmd = NULL; @@ -1470,15 +1470,14 @@ static void subscription_cmd(int argc, char *argv[], uint32_t opcode) grp = l_queue_find(groups, match_group_addr, L_UINT_TO_PTR(sub_addr)); - if (!grp && opcode != OP_CONFIG_MODEL_SUB_DELETE) { - grp = add_group(sub_addr); - - if (!grp && IS_VIRTUAL(sub_addr)) { - print_virtual_not_found(sub_addr); - return bt_shell_noninteractive_quit(EXIT_FAILURE); - } + if (!grp && IS_VIRTUAL(sub_addr)) { + print_virtual_not_found(sub_addr); + return bt_shell_noninteractive_quit(EXIT_FAILURE); } + if (!grp && opcode != OP_CONFIG_MODEL_SUB_DELETE) + grp = add_group(sub_addr); + if (IS_VIRTUAL(sub_addr)) { if (opcode == OP_CONFIG_MODEL_SUB_ADD) opcode = OP_CONFIG_MODEL_SUB_VIRT_ADD; -- 2.26.2