[asterisk-commits] mnick: branch 1.4 r221153 - /branches/1.4/funcs/func_strings.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Sep 30 10:37:42 CDT 2009
Author: mnick
Date: Wed Sep 30 10:37:39 2009
New Revision: 221153
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=221153
Log:
check bounds - prevents for buffer overflow
Modified:
branches/1.4/funcs/func_strings.c
Modified: branches/1.4/funcs/func_strings.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/funcs/func_strings.c?view=diff&rev=221153&r1=221152&r2=221153
==============================================================================
--- branches/1.4/funcs/func_strings.c (original)
+++ branches/1.4/funcs/func_strings.c Wed Sep 30 10:37:39 2009
@@ -384,6 +384,12 @@
static int quote(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
{
char *bufptr = buf, *dataptr = data;
+
+ if (len < 3){ /* at least two for quotes and one for binary zero */
+ ast_log(LOG_ERROR, "Not enough buffer");
+ return -1;
+ }
+
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "No argument specified!\n");
ast_copy_string(buf, "\"\"", len);
@@ -391,7 +397,7 @@
}
*bufptr++ = '"';
- for (; bufptr < buf + len - 1; dataptr++) {
+ for (; bufptr < buf + len - 3; dataptr++) {
if (*dataptr == '\\') {
*bufptr++ = '\\';
*bufptr++ = '\\';
More information about the asterisk-commits
mailing list