diff mbox series

[BlueZ,v3,5/7] iso-tester: Test getpeername return SID

Message ID 20250416160433.1822263-5-luiz.dentz@gmail.com
State New
Headers show
Series [BlueZ,v3,1/7] bap: Fix not setting SID for broadcast receiver | expand

Commit Message

Luiz Augusto von Dentz April 16, 2025, 4:04 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

If test is not setting a valid SID (0xff) use getpeername to validate
the SID gets updated.
---
 tools/iso-tester.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
diff mbox series

Patch

diff --git a/tools/iso-tester.c b/tools/iso-tester.c
index b362647461c3..63f6951e3d0a 100644
--- a/tools/iso-tester.c
+++ b/tools/iso-tester.c
@@ -2575,6 +2575,40 @@  static gboolean iso_connect(GIOChannel *io, GIOCondition cond,
 		}
 	}
 
+	if (isodata->sid == 0xff) {
+		struct {
+			struct sockaddr_iso iso;
+			struct sockaddr_iso_bc bc;
+		} addr;
+		socklen_t olen;
+
+		olen = sizeof(addr);
+
+		memset(&addr, 0, olen);
+		if (getpeername(sk, (void *)&addr, &olen) < 0) {
+			tester_warn("getpeername: %s (%d)",
+					strerror(errno), errno);
+			data->step = 0;
+			tester_test_failed();
+			return FALSE;
+		}
+
+		if (olen != sizeof(addr)) {
+			tester_warn("getpeername: olen %d != %zu sizeof(addr)",
+					olen, sizeof(addr));
+			data->step = 0;
+			tester_test_failed();
+			return FALSE;
+		}
+
+		if (addr.bc.bc_sid > 0x0f) {
+			tester_warn("Invalid SID: %d", addr.bc.bc_sid);
+			data->step = 0;
+			tester_test_failed();
+			return FALSE;
+		}
+	}
+
 	len = sizeof(sk_err);
 
 	if (getsockopt(sk, SOL_SOCKET, SO_ERROR, &sk_err, &len) < 0)