aboutsummaryrefslogtreecommitdiff
path: root/gcc/jit
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2015-03-13 19:09:12 +0100
committerUros Bizjak <uros@gcc.gnu.org>2015-03-13 19:09:12 +0100
commitf40fd89585dad63cb5d1b0e6df655fc09211b8d3 (patch)
tree99a768a7d65989cb5fa2ea301f09462a024a1218 /gcc/jit
parent18eb0d132457974c8bda7e847597b2c802c69876 (diff)
downloadgcc-f40fd89585dad63cb5d1b0e6df655fc09211b8d3.zip
gcc-f40fd89585dad63cb5d1b0e6df655fc09211b8d3.tar.gz
gcc-f40fd89585dad63cb5d1b0e6df655fc09211b8d3.tar.bz2
jit-recording.c (dump::write): Also check vasprintf return value.
* jit-recording.c (dump::write): Also check vasprintf return value. (recording::context::add_error_va): Ditto. (recording::string::from_printf): Ditto. From-SVN: r221426
Diffstat (limited to 'gcc/jit')
-rw-r--r--gcc/jit/ChangeLog6
-rw-r--r--gcc/jit/jit-recording.c27
2 files changed, 21 insertions, 12 deletions
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index cc15f93..4c02a3f 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-13 Uros Bizjak <ubizjak@gmail.com>
+
+ * jit-recording.c (dump::write): Also check vasprintf return value.
+ (recording::context::add_error_va): Ditto.
+ (recording::string::from_printf): Ditto.
+
2015-03-13 David Malcolm <dmalcolm@redhat.com>
* docs/internals/index.rst (Packaging notes): New section.
diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c
index fb0b0a9..32d7f31 100644
--- a/gcc/jit/jit-recording.c
+++ b/gcc/jit/jit-recording.c
@@ -77,8 +77,9 @@ dump::~dump ()
void
dump::write (const char *fmt, ...)
{
+ int len;
va_list ap;
- char *buf = NULL;
+ char *buf;
/* If there was an error opening the file, we've already reported it.
Don't attempt further work. */
@@ -86,10 +87,10 @@ dump::write (const char *fmt, ...)
return;
va_start (ap, fmt);
- vasprintf (&buf, fmt, ap);
+ len = vasprintf (&buf, fmt, ap);
va_end (ap);
- if (!buf)
+ if (buf == NULL || len < 0)
{
m_ctxt.add_error (NULL, "malloc failure writing to dumpfile %s",
m_filename);
@@ -1231,22 +1232,23 @@ recording::context::add_error (location *loc, const char *fmt, ...)
void
recording::context::add_error_va (location *loc, const char *fmt, va_list ap)
{
+ int len;
char *malloced_msg;
const char *errmsg;
bool has_ownership;
JIT_LOG_SCOPE (get_logger ());
- vasprintf (&malloced_msg, fmt, ap);
- if (malloced_msg)
+ len = vasprintf (&malloced_msg, fmt, ap);
+ if (malloced_msg == NULL || len < 0)
{
- errmsg = malloced_msg;
- has_ownership = true;
+ errmsg = "out of memory generating error message";
+ has_ownership = false;
}
else
{
- errmsg = "out of memory generating error message";
- has_ownership = false;
+ errmsg = malloced_msg;
+ has_ownership = true;
}
if (get_logger ())
get_logger ()->log ("error %i: %s", m_error_count, errmsg);
@@ -1709,15 +1711,16 @@ recording::string::~string ()
recording::string *
recording::string::from_printf (context *ctxt, const char *fmt, ...)
{
+ int len;
va_list ap;
- char *buf = NULL;
+ char *buf;
recording::string *result;
va_start (ap, fmt);
- vasprintf (&buf, fmt, ap);
+ len = vasprintf (&buf, fmt, ap);
va_end (ap);
- if (!buf)
+ if (buf == NULL || len < 0)
{
ctxt->add_error (NULL, "malloc failure");
return NULL;