diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-28 18:26:09 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-28 18:26:09 +0000 |
commit | 07b700ead5362478da6686c28d30fe4ffac2b6bd (patch) | |
tree | 822009a2afe7e673ebb759ffd03519b81c6901d5 /libgfortran | |
parent | 691adeb097c9f4926cb83bdb50bb39b4d2e25c72 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | libgfortran/intrinsics/string_intrinsics_inc.c | 8 |
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; |