From 51862bbe2eefb797734e495f1d6190dfeb1ef31e Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 5 Mar 2008 18:10:39 +0000 Subject: Avoid potential allignment trap --- sdpd/request.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sdpd/request.c b/sdpd/request.c index 20e68b62..5e3c715f 100644 --- a/sdpd/request.c +++ b/sdpd/request.c @@ -179,7 +179,10 @@ static sdp_cont_state_t *sdp_cstate_get(uint8_t *buffer) pdata += sizeof(uint8_t); if (cStateSize != 0) { - sdp_cont_state_t *cstate = (sdp_cont_state_t *)pdata; + sdp_cont_state_t *cstate = malloc(sizeof(sdp_cont_state_t)); + if (!cstate) + return NULL; + memcpy(cstate, (sdp_cont_state_t *)pdata, sizeof(sdp_cont_state_t)); debug("Cstate TS : 0x%lx", cstate->timestamp); debug("Bytes sent : %d", cstate->cStateValue.maxBytesSent); return cstate; @@ -408,6 +411,8 @@ static int service_search_req(sdp_req_t *req, sdp_buf_t *buf) } done: + if (cstate) + free(cstate); if (pattern) sdp_list_free(pattern, free); @@ -593,6 +598,8 @@ static int service_attr_req(sdp_req_t *req, sdp_buf_t *buf) buf->buf_size += sizeof(uint16_t); done: + if (cstate) + free(cstate); if (seq) sdp_list_free(seq, free); if (status) @@ -754,6 +761,8 @@ static int service_search_attr_req(sdp_req_t *req, sdp_buf_t *buf) } done: + if (cstate) + free(cstate); if (tmpbuf.data) free(tmpbuf.data); if (pattern) -- cgit