make sure the argument to ast_malloc() is > 0.
authorLuigi Rizzo <rizzo@icir.org>
Mon, 11 Dec 2006 18:11:58 +0000 (18:11 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Mon, 11 Dec 2006 18:11:58 +0000 (18:11 +0000)
Long explaination:

The behaviour of the underlying malloc(0) differs depending on the
operating system.  Some return NULL (SysV behaviour); some still
allocate a small chunk of memory and return a valid pointer (e.g.
traditional BSD); some (e.g. FreeBSD 6.x) return a non-null pointer
that causes a memory fault if used, even just for reading.

Given the above variety, better never call malloc(0).

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48389 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index 269f708..a0ecbd8 100644 (file)
@@ -2599,7 +2599,7 @@ static char *xml_translate(char *in, struct ast_variable *vars, enum output_form
                else if (strchr("&\"<>", in[x]))
                        escaped++;
        }
-       len = (size_t) (strlen(in) + colons * 5 + breaks * (40 + strlen(dest) + strlen(objtype)) + escaped * 10); /* foo="bar", "<response type=\"object\" id=\"dest\"", "&amp;" */
+       len = (size_t) (1 + strlen(in) + colons * 5 + breaks * (40 + strlen(dest) + strlen(objtype)) + escaped * 10); /* foo="bar", "<response type=\"object\" id=\"dest\"", "&amp;" */
        out = ast_malloc(len);
        if (!out)
                return NULL;