From 8227e4a763bf14b6cfd98a14d8657bf656ea1af0 Mon Sep 17 00:00:00 2001 From: Petar Jovanovic Date: Wed, 27 Sep 2017 15:55:16 +0200 Subject: [PATCH] mips: new Memcheck test, bad_sioc Check if Memcheck is able to recognize errors related to uninitialized parameters in ioctl(SIOCSPGRP / SIOCATMARK) calls. Test by Aleksandar Rikalo. --- .gitignore | 2 ++ memcheck/tests/mips32/Makefile.am | 3 +++ memcheck/tests/mips32/bad_sioc.c | 19 +++++++++++++++++++ memcheck/tests/mips32/bad_sioc.stderr.exp | 12 ++++++++++++ memcheck/tests/mips32/bad_sioc.stdout.exp | 0 memcheck/tests/mips32/bad_sioc.vgtest | 2 ++ memcheck/tests/mips64/Makefile.am | 2 ++ memcheck/tests/mips64/bad_sioc.c | 1 + memcheck/tests/mips64/bad_sioc.stderr.exp | 1 + memcheck/tests/mips64/bad_sioc.stdout.exp | 1 + memcheck/tests/mips64/bad_sioc.vgtest | 1 + 11 files changed, 44 insertions(+) create mode 100644 memcheck/tests/mips32/bad_sioc.c create mode 100644 memcheck/tests/mips32/bad_sioc.stderr.exp create mode 100644 memcheck/tests/mips32/bad_sioc.stdout.exp create mode 100644 memcheck/tests/mips32/bad_sioc.vgtest create mode 120000 memcheck/tests/mips64/bad_sioc.c create mode 120000 memcheck/tests/mips64/bad_sioc.stderr.exp create mode 120000 memcheck/tests/mips64/bad_sioc.stdout.exp create mode 120000 memcheck/tests/mips64/bad_sioc.vgtest diff --git a/.gitignore b/.gitignore index 7c8bb8978..ba06188c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1098,6 +1098,7 @@ /memcheck/tests/mips32/.deps /memcheck/tests/mips32/Makefile /memcheck/tests/mips32/Makefile.in +/memcheck/tests/mips32/bad_sioc /memcheck/tests/mips32/fadvise64 # /memcheck/tests/mips64/ @@ -1108,6 +1109,7 @@ /memcheck/tests/mips64/.deps /memcheck/tests/mips64/Makefile /memcheck/tests/mips64/Makefile.in +/memcheck/tests/mips64/bad_sioc /memcheck/tests/mips64/fadvise64 # /memcheck/tests/ppc32/ diff --git a/memcheck/tests/mips32/Makefile.am b/memcheck/tests/mips32/Makefile.am index c43280df5..3b21909c9 100644 --- a/memcheck/tests/mips32/Makefile.am +++ b/memcheck/tests/mips32/Makefile.am @@ -5,9 +5,12 @@ dist_noinst_SCRIPTS = \ filter_stderr EXTRA_DIST = $(noinst_SCRIPTS) \ + badsioc.stderr.exp badsioc.stdout.exp badsioc.vgtest \ fadvise64.stderr.exp fadvise64.stdout.exp fadvise64.vgtest + check_PROGRAMS = \ + bad_sioc \ fadvise64 fadvise64_CFLAGS = $(AM_CFLAGS) -Wno-uninitialized diff --git a/memcheck/tests/mips32/bad_sioc.c b/memcheck/tests/mips32/bad_sioc.c new file mode 100644 index 000000000..41f11e708 --- /dev/null +++ b/memcheck/tests/mips32/bad_sioc.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include + +int main() +{ + pid_t pid; + int fd, atmark; + + fd = socket(PF_INET, SOCK_DGRAM, 0); + + ioctl(fd, SIOCSPGRP, &pid); + ioctl(fd, SIOCATMARK, &atmark); + + close(fd); + + return 0; +} diff --git a/memcheck/tests/mips32/bad_sioc.stderr.exp b/memcheck/tests/mips32/bad_sioc.stderr.exp new file mode 100644 index 000000000..4a8b1772d --- /dev/null +++ b/memcheck/tests/mips32/bad_sioc.stderr.exp @@ -0,0 +1,12 @@ +Syscall param ioctl(SIOCSPGRP) points to uninitialised byte(s) + ... + by 0x........: main (bad_sioc.c:13) + Address 0x........ is on thread 1's stack + in frame #1, created by main (bad_sioc.c:7) + +Syscall param ioctl(SIOCATMARK) points to uninitialised byte(s) + ... + by 0x........: main (bad_sioc.c:14) + Address 0x........ is on thread 1's stack + in frame #1, created by main (bad_sioc.c:7) + diff --git a/memcheck/tests/mips32/bad_sioc.stdout.exp b/memcheck/tests/mips32/bad_sioc.stdout.exp new file mode 100644 index 000000000..e69de29bb diff --git a/memcheck/tests/mips32/bad_sioc.vgtest b/memcheck/tests/mips32/bad_sioc.vgtest new file mode 100644 index 000000000..b6951b899 --- /dev/null +++ b/memcheck/tests/mips32/bad_sioc.vgtest @@ -0,0 +1,2 @@ +prog: bad_sioc +vgopts: -q diff --git a/memcheck/tests/mips64/Makefile.am b/memcheck/tests/mips64/Makefile.am index c43280df5..226f07703 100644 --- a/memcheck/tests/mips64/Makefile.am +++ b/memcheck/tests/mips64/Makefile.am @@ -5,9 +5,11 @@ dist_noinst_SCRIPTS = \ filter_stderr EXTRA_DIST = $(noinst_SCRIPTS) \ + badsioc.stderr.exp badsioc.stdout.exp badsioc.vgtest \ fadvise64.stderr.exp fadvise64.stdout.exp fadvise64.vgtest check_PROGRAMS = \ + bad_sioc \ fadvise64 fadvise64_CFLAGS = $(AM_CFLAGS) -Wno-uninitialized diff --git a/memcheck/tests/mips64/bad_sioc.c b/memcheck/tests/mips64/bad_sioc.c new file mode 120000 index 000000000..9e776e5b5 --- /dev/null +++ b/memcheck/tests/mips64/bad_sioc.c @@ -0,0 +1 @@ +../mips32/bad_sioc.c \ No newline at end of file diff --git a/memcheck/tests/mips64/bad_sioc.stderr.exp b/memcheck/tests/mips64/bad_sioc.stderr.exp new file mode 120000 index 000000000..312f0b758 --- /dev/null +++ b/memcheck/tests/mips64/bad_sioc.stderr.exp @@ -0,0 +1 @@ +../mips32/bad_sioc.stderr.exp \ No newline at end of file diff --git a/memcheck/tests/mips64/bad_sioc.stdout.exp b/memcheck/tests/mips64/bad_sioc.stdout.exp new file mode 120000 index 000000000..f9fab1c3e --- /dev/null +++ b/memcheck/tests/mips64/bad_sioc.stdout.exp @@ -0,0 +1 @@ +../mips32/bad_sioc.stdout.exp \ No newline at end of file diff --git a/memcheck/tests/mips64/bad_sioc.vgtest b/memcheck/tests/mips64/bad_sioc.vgtest new file mode 120000 index 000000000..60e1b39da --- /dev/null +++ b/memcheck/tests/mips64/bad_sioc.vgtest @@ -0,0 +1 @@ +../mips32/bad_sioc.vgtest \ No newline at end of file