From 5f7e81b564a565a8a0736f9683b6df34d359b935 Mon Sep 17 00:00:00 2001 From: Russell Bryant <russell@russellbryant.com> Date: Wed, 19 Mar 2008 03:51:06 +0000 Subject: [PATCH] Set req->data to NULL after free'ing to ensure that it never gets accidentally double free'd. (reported by dhubbard directly to me) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@109833 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index ef0227ce05..43484ea368 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -3100,6 +3100,7 @@ static int send_response(struct sip_pvt *p, struct sip_request *req, enum xmitty __sip_reliable_xmit(p, seqno, 1, req->data, req->len, (reliable == XMIT_CRITICAL), req->method) : __sip_xmit(p, req->data, req->len); ast_free(req->data); + req->data = NULL; if (res > 0) return 0; return res; @@ -3133,8 +3134,10 @@ static int send_request(struct sip_pvt *p, struct sip_request *req, enum xmittyp res = (reliable) ? __sip_reliable_xmit(p, seqno, 0, req->data, req->len, (reliable == XMIT_CRITICAL), req->method) : __sip_xmit(p, req->data, req->len); - if (req->data) + if (req->data) { ast_free(req->data); + req->data = NULL; + } return res; } @@ -18102,6 +18105,7 @@ static int handle_request_do(struct sip_request *req, struct sockaddr_in *sin) if (req->headers < 2) { /* Must have at least two headers */ ast_free(req->data); + req->data = NULL; return 1; } -- GitLab