aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-12-28 18:26:09 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-12-28 18:26:09 +0000
commit07b700ead5362478da6686c28d30fe4ffac2b6bd (patch)
tree822009a2afe7e673ebb759ffd03519b81c6901d5 /libgfortran
parent691adeb097c9f4926cb83bdb50bb39b4d2e25c72 (diff)
downloadgcc-07b700ead5362478da6686c28d30fe4ffac2b6bd.zip
gcc-07b700ead5362478da6686c28d30fe4ffac2b6bd.tar.gz
gcc-07b700ead5362478da6686c28d30fe4ffac2b6bd.tar.bz2
re PR libfortran/81984 (NULL string pointer dereferencing forces undefined behaviour in libgfortran)
2018-12-28 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/81984 * intrinsics/string_intrinsics_inc.c: Placate the sanitizer. From-SVN: r267452
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/intrinsics/string_intrinsics_inc.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 03efb11..8397eee 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2018-12-28 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/81984
+ * intrinsics/string_intrinsics_inc.c: Placate the sanitizer.
+
2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69121
diff --git a/libgfortran/intrinsics/string_intrinsics_inc.c b/libgfortran/intrinsics/string_intrinsics_inc.c
index bfec683..b81c806 100644
--- a/libgfortran/intrinsics/string_intrinsics_inc.c
+++ b/libgfortran/intrinsics/string_intrinsics_inc.c
@@ -87,6 +87,14 @@ compare_string (gfc_charlen_type len1, const CHARTYPE *s1,
gfc_charlen_type len;
int res;
+ /* Placate the sanitizer. */
+ if (!s1 && !s2)
+ return 0;
+ if (!s1)
+ return -1;
+ if (!s2)
+ return 1;
+
res = MEMCMP (s1, s2, ((len1 < len2) ? len1 : len2));
if (res != 0)
return res;