[asterisk-commits] anthonyl: branch anthonyl/7774-branch r48120 - /team/anthonyl/7774-branch/cha...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Nov 29 14:57:47 MST 2006


Author: anthonyl
Date: Wed Nov 29 15:57:46 2006
New Revision: 48120

URL: http://svn.digium.com/view/asterisk?view=rev&rev=48120
Log:
made the memcpy safe, and added some length checking

Modified:
    team/anthonyl/7774-branch/channels/chan_skinny.c

Modified: team/anthonyl/7774-branch/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/anthonyl/7774-branch/channels/chan_skinny.c?view=diff&rev=48120&r1=48119&r2=48120
==============================================================================
--- team/anthonyl/7774-branch/channels/chan_skinny.c (original)
+++ team/anthonyl/7774-branch/channels/chan_skinny.c Wed Nov 29 15:57:46 2006
@@ -1393,9 +1393,14 @@
 		ast_verbose("writing packet type %04X (%d bytes) to socket %d\n", letohl(req->e), letohl(req->len)+8, s->fd);
 #endif
 
+	if ( letohl(req->len) < 0) {
+		ast_log(LOG_WARNING, "transmit_response: sent a bogus skinny request\n");
+		return -1;
+	}
+	
 	memset(s->outbuf,0,sizeof(s->outbuf));
 	memcpy(s->outbuf, req, skinny_header_size);
-	memcpy(s->outbuf+skinny_header_size, &req->data, sizeof(union skinny_data));
+	memcpy(s->outbuf+skinny_header_size, &req->data, letohl(req->len));
 
 	res = write(s->fd, s->outbuf, letohl(req->len)+8);
 



More information about the asterisk-commits mailing list