From: Doug Bailey Date: Thu, 10 May 2007 20:48:54 +0000 (+0000) Subject: Add test for negative offsets in cid data to prevent infinite loops. X-Git-Tag: 1.4.5~199 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a75d0f5329f564b790d3f7c0d5e766e24f58b7fa;p=thirdparty%2Fasterisk.git Add test for negative offsets in cid data to prevent infinite loops. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@63750 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/callerid.c b/main/callerid.c index 9f42ccf1fd..901137348f 100644 --- a/main/callerid.c +++ b/main/callerid.c @@ -660,6 +660,12 @@ int callerid_feed(struct callerid_state *cid, unsigned char *ubuf, int len, int default: ast_log(LOG_NOTICE, "Unknown IE %d\n", cid->rawdata[x-1]); } + if(0 > cid->rawdata[x]){ /* Negative offset in the CID Spill */ + ast_log(LOG_NOTICE, "IE %d has bad field length of %d at offset %d\n", cid->rawdata[x-1], cid->rawdata[x], x); + /* Try again */ + cid->sawflag = 0; + break; /* Exit the loop */ + } x += cid->rawdata[x]; x++; }