summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2018-07-30 09:32:15 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2018-07-30 09:32:15 +0000
commit12fbad8c30256b0b7a9681f0e7a63cf0ca690d1f (patch)
tree2b0f8b2f78f49f753499eeca7e236b2b0b777f0a
parent302e309cce611ce1f44c5ab3aa0cb3ec7d43ca7c (diff)
downloadmpfr-12fbad8c30256b0b7a9681f0e7a63cf0ca690d1f.tar.gz
[src/vasprintf.c] Fixed "store to null pointer" and free of bad pointer
in case of error. (merged part of changeset r12957 from the trunk) git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/4.0@12965 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--src/vasprintf.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/vasprintf.c b/src/vasprintf.c
index b4fee3477..19d9998bc 100644
--- a/src/vasprintf.c
+++ b/src/vasprintf.c
@@ -2320,8 +2320,10 @@ mpfr_vasnprintf_aux (char **ptr, char *Buf, size_t size, const char *fmt,
}
MPFR_SAVE_EXPO_FREE (expo);
- *ptr = NULL;
- mpfr_free_func (buf.start, buf.size);
+ if (ptr != NULL) /* implement mpfr_vasprintf */
+ *ptr = NULL;
+ if (ptr != NULL || size != 0)
+ mpfr_free_func (buf.start, buf.size);
return -1;
}