From 41d3081c4ac0a79a4ad292957ead84f8477eaa55 Mon Sep 17 00:00:00 2001 From: Sertonix Date: Sat, 11 Oct 2025 18:25:20 +0200 Subject: Add `swab` Make the overlap check pedantic only since some software seems to rely on glibc working when src and dest are the same. --- tests/Makefile | 4 ++++ tests/test_swab_dynamic_read.c | 18 ++++++++++++++++++ tests/test_swab_dynamic_write.c | 18 ++++++++++++++++++ tests/test_swab_overwrite_over.c | 17 +++++++++++++++++ tests/test_swab_overwrite_under.c | 17 +++++++++++++++++ tests/test_swab_static_read.c | 18 ++++++++++++++++++ tests/test_swab_static_write.c | 18 ++++++++++++++++++ 7 files changed, 110 insertions(+) create mode 100644 tests/test_swab_dynamic_read.c create mode 100644 tests/test_swab_dynamic_write.c create mode 100644 tests/test_swab_overwrite_over.c create mode 100644 tests/test_swab_overwrite_under.c create mode 100644 tests/test_swab_static_read.c create mode 100644 tests/test_swab_static_write.c (limited to 'tests') diff --git a/tests/Makefile b/tests/Makefile index e9e52dc..b4ea242 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -126,6 +126,10 @@ RUNTIME_TARGETS= \ test_strncpy_static_write \ test_strrchr_dynamic_read \ test_strrchr_static_read \ + test_swab_dynamic_read \ + test_swab_dynamic_write \ + test_swab_overwrite_over \ + test_swab_static_read \ test_ttyname_r_dynamic \ test_ttyname_r_static \ test_umask \ diff --git a/tests/test_swab_dynamic_read.c b/tests/test_swab_dynamic_read.c new file mode 100644 index 0000000..402dc4e --- /dev/null +++ b/tests/test_swab_dynamic_read.c @@ -0,0 +1,18 @@ +#define _XOPEN_SOURCE + +#include "common.h" + +#include + +int main(int argc, char** argv) { + char buffer[12] = {0}; + swab("1234567890", buffer, sizeof(buffer) - 1); + puts(buffer); + + CHK_FAIL_START + swab("123456", buffer, argc); + CHK_FAIL_END + + puts(buffer); + return ret; +} diff --git a/tests/test_swab_dynamic_write.c b/tests/test_swab_dynamic_write.c new file mode 100644 index 0000000..21725b7 --- /dev/null +++ b/tests/test_swab_dynamic_write.c @@ -0,0 +1,18 @@ +#define _XOPEN_SOURCE + +#include "common.h" + +#include + +int main(int argc, char** argv) { + char buffer[8] = {0}; + swab("1234567890", buffer, sizeof(buffer) - 1); + puts(buffer); + + CHK_FAIL_START + swab("1234567890", buffer, argc); + CHK_FAIL_END + + puts(buffer); + return ret; +} diff --git a/tests/test_swab_overwrite_over.c b/tests/test_swab_overwrite_over.c new file mode 100644 index 0000000..997f6d1 --- /dev/null +++ b/tests/test_swab_overwrite_over.c @@ -0,0 +1,17 @@ +#define _XOPEN_SOURCE + +#include "common.h" + +#include + +int main(int argc, char** argv) { + char buffer[9] = {'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', '\0'}; + puts(buffer); + + CHK_FAIL_START + swab(buffer+1, buffer, 5); + CHK_FAIL_END + + puts(buffer); + return ret; +} diff --git a/tests/test_swab_overwrite_under.c b/tests/test_swab_overwrite_under.c new file mode 100644 index 0000000..1d69545 --- /dev/null +++ b/tests/test_swab_overwrite_under.c @@ -0,0 +1,17 @@ +#define _XOPEN_SOURCE + +#include "common.h" + +#include + +int main(int argc, char** argv) { + char buffer[9] = {'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', '\0'}; + puts(buffer); + + CHK_FAIL_START + swab(buffer-1, buffer, 5); + CHK_FAIL_END + + puts(buffer); + return ret; +} diff --git a/tests/test_swab_static_read.c b/tests/test_swab_static_read.c new file mode 100644 index 0000000..f7fffcb --- /dev/null +++ b/tests/test_swab_static_read.c @@ -0,0 +1,18 @@ +#define _XOPEN_SOURCE + +#include "common.h" + +#include + +int main(int argc, char** argv) { + char buffer[8] = {0}; + swab("123456", buffer, 4); + puts(buffer); + + CHK_FAIL_START + swab("123456", buffer, sizeof(buffer)); + CHK_FAIL_END + + puts(buffer); + return ret; +} diff --git a/tests/test_swab_static_write.c b/tests/test_swab_static_write.c new file mode 100644 index 0000000..b5a63c6 --- /dev/null +++ b/tests/test_swab_static_write.c @@ -0,0 +1,18 @@ +#define _XOPEN_SOURCE + +#include "common.h" + +#include + +int main(int argc, char** argv) { + char buffer[8] = {0}; + swab("1234567890", buffer, sizeof(buffer) - 1); + puts(buffer); + + CHK_FAIL_START + swab("1234567890", buffer, sizeof(buffer) + 1); + CHK_FAIL_END + + puts(buffer); + return ret; +} -- cgit v1.3