diff --git a/monitor/sdp.c b/monitor/sdp.c
index 1b904ee..d0ad688 100644
--- a/monitor/sdp.c
+++ b/monitor/sdp.c
struct tid_data *tid_info;
const struct sdp_data *sdp_data = NULL;
const char *pdu_color, *pdu_str;
-
int i;
if (frame->size < 5) {
return;
}
- pdu = *((uint8_t *) frame->data);
- tid = get_be16(frame->data + 1);
- plen = get_be16(frame->data + 3);
+ l2cap_frame_pull(&sdp_frame, frame, 0);
+
+ l2cap_frame_get_u8(&sdp_frame, &pdu);
+ l2cap_frame_get_be16(&sdp_frame, &tid);
+ l2cap_frame_get_be16(&sdp_frame, &plen);
- if (frame->size != plen + 5) {
+ if (sdp_frame.size != plen) {
print_text(COLOR_ERROR, "invalid frame size");
- packet_hexdump(frame->data, frame->size);
+ packet_hexdump(sdp_frame.data, sdp_frame.size);
return;
}
tid_info = get_tid(tid, frame->chan);
if (!sdp_data || !sdp_data->func || !tid_info) {
- packet_hexdump(frame->data + 5, frame->size - 5);
+ packet_hexdump(sdp_frame.data, sdp_frame.size);
return;
}
- l2cap_frame_pull(&sdp_frame, frame, 5);
sdp_data->func(&sdp_frame, tid_info);
}