summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorienkovich <ienkovich@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-09 10:11:30 +0000
committerienkovich <ienkovich@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-09 10:11:30 +0000
commit880923086b0675d706e9aa7611bf9b979dc62b0a (patch)
tree197c099455b92c4fccdc2a89f6f4d5cbb0d7ae2d
parent23af5d95f7be4fda969a82c63c9fbb7bfb48fd4a (diff)
libmpx/
* mpxwrap/mpx_wrappers.c (__mpx_wrapper_memmove): Add zero length check. gcc/testsuite/ * gcc.target/i386/mpx/memmove-zero-length.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221944 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/i386/mpx/memmove-zero-length.c18
-rw-r--r--libmpx/ChangeLog5
-rw-r--r--libmpx/mpxwrap/mpx_wrappers.c3
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1cd869a0fb58..90e467abb41c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-04-09 Ilya Enkovich <ilya.enkovich@intel.com>
+
+ * gcc.target/i386/mpx/memmove-zero-length.c: New.
+
2015-04-09 Kirill Yukhin <kirill.yukhin@intel.com>
PR target/65676
diff --git a/gcc/testsuite/gcc.target/i386/mpx/memmove-zero-length.c b/gcc/testsuite/gcc.target/i386/mpx/memmove-zero-length.c
new file mode 100644
index 000000000000..78bfdebff030
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/memmove-zero-length.c
@@ -0,0 +1,18 @@
+/* { dg-do run } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#include "mpx-check.h"
+#include "string.h"
+
+int mpx_test (int argc, const char **argv)
+{
+ int *buf = (int *)malloc (100 * sizeof(int));
+
+ memmove (buf, NULL, 0);
+ memmove (NULL, buf, 0);
+
+ free (buf);
+
+ return 0;
+}
diff --git a/libmpx/ChangeLog b/libmpx/ChangeLog
index 6b05278b0d05..56c3c5f1b2b6 100644
--- a/libmpx/ChangeLog
+++ b/libmpx/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-09 Ilya Enkovich <ilya.enkovich@intel.com>
+
+ * mpxwrap/mpx_wrappers.c (__mpx_wrapper_memmove): Add
+ zero length check.
+
2015-04-02 Ilya Enkovich <ilya.enkovich@intel.com>
PR driver/65444
diff --git a/libmpx/mpxwrap/mpx_wrappers.c b/libmpx/mpxwrap/mpx_wrappers.c
index ef4be8d0a390..58670aae4819 100644
--- a/libmpx/mpxwrap/mpx_wrappers.c
+++ b/libmpx/mpxwrap/mpx_wrappers.c
@@ -97,6 +97,9 @@ __mpx_wrapper_memmove (void *dst, const void *src, size_t n)
size_t offset_src = ((size_t) s) & (sizeof (void *) - 1);
size_t offset_dst = ((size_t) d) & (sizeof (void *) - 1);
+ if (n == 0)
+ return ret;
+
__bnd_chk_ptr_bounds (dst, n);
__bnd_chk_ptr_bounds (src, n);