DragonFlyBSD Kernel Audit
DF-0709 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/netbt/sco_socket.c b/sys/netbt/sco_socket.c
index 0000000..1111111 100644
--- a/sys/netbt/sco_socket.c
+++ b/sys/netbt/sco_socket.c
@@ -111,13 +111,11 @@
 		m = m_get(M_WAITOK, MT_DATA);
 		m->m_len = sco_getopt(pcb, sopt->sopt_name, mtod(m, uint8_t *));
 		if (m->m_len == 0) {
-			m_freem(m);
-			m = NULL;
 			err = ENOPROTOOPT;
+		} else {
+			soopt_from_kbuf(sopt, mtod(m, void *), m->m_len);
 		}
-		/* *opt = m; */
-		/* XXX There are possible memory leaks (Griffin) */
-		soopt_from_kbuf(sopt, mtod(m, void *), m->m_len);
+		m_freem(m);
 		break;
 
 	case PRCO_SETOPT: