You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by na...@apache.org on 2021/05/27 08:19:51 UTC

[mynewt-nimble] 13/31: mesh: Check model publish pointer before dereferencing

This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 5e24948f0f409826cedcf8a6a1c0189024ce85cd
Author: Krzysztof Kopyściński <kr...@codecoup.pl>
AuthorDate: Mon Mar 29 13:10:27 2021 +0200

    mesh: Check model publish pointer before dereferencing
    
    Moves the if !(pub) check to happen before it gets used in the
    initialization of the message context in bt_mesh_model_publish.
    
    this is port of bba2d7b84b82ac7322898776b46727580bc39ae0
---
 nimble/host/mesh/src/access.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/nimble/host/mesh/src/access.c b/nimble/host/mesh/src/access.c
index da07718..d23a656 100644
--- a/nimble/host/mesh/src/access.c
+++ b/nimble/host/mesh/src/access.c
@@ -682,8 +682,15 @@ int bt_mesh_model_send(struct bt_mesh_model *model,
 
 int bt_mesh_model_publish(struct bt_mesh_model *model)
 {
+	int err;
 	struct os_mbuf *sdu = NET_BUF_SIMPLE(BT_MESH_TX_SDU_MAX);
 	struct bt_mesh_model_pub *pub = model->pub;
+
+	if (!pub) {
+		err = -ENOTSUP;
+		goto done;
+	}
+
 	struct bt_mesh_msg_ctx ctx = {
 		.addr = pub->addr,
 		.send_ttl = pub->ttl,
@@ -694,15 +701,9 @@ int bt_mesh_model_publish(struct bt_mesh_model *model)
 		.ctx = &ctx,
 		.src = bt_mesh_model_elem(model)->addr,
 	};
-	int err;
 
 	BT_DBG("");
 
-	if (!pub) {
-		err = -ENOTSUP;
-		goto done;
-	}
-
 	if (pub->addr == BT_MESH_ADDR_UNASSIGNED) {
 		err = -EADDRNOTAVAIL;
 		goto done;