[PATCH 2/2] mtd: unittests: Decode arg size from ioctl request
Balint Reczey
balint at balintreczey.hu
Tue Feb 6 14:58:21 PST 2018
Signed-off-by: Balint Reczey <balint.reczey at canonical.com>
---
tests/unittests/libmtd_test.c | 30 +++++++++++++++---------------
tests/unittests/libubi_test.c | 22 +++++++++++-----------
tests/unittests/test_lib.h | 11 ++++-------
3 files changed, 30 insertions(+), 33 deletions(-)
diff --git a/tests/unittests/libmtd_test.c b/tests/unittests/libmtd_test.c
index fc28dc0..f36fb56 100644
--- a/tests/unittests/libmtd_test.c
+++ b/tests/unittests/libmtd_test.c
@@ -70,7 +70,7 @@ static void test_mtd_mark_bad(void **state)
mtd.eb_cnt = 1024;
mtd.eb_size = 128;
seek = (loff_t)eb * mtd.eb_size;
- expect_ioctl(MEMSETBADBLOCK, 0, &seek, sizeof(seek));
+ expect_ioctl(MEMSETBADBLOCK, 0, &seek);
int r = mtd_mark_bad(&mtd, 4, eb);
assert_int_equal(r, 0);
@@ -87,7 +87,7 @@ static void test_mtd_is_bad(void **state)
mtd.eb_cnt = 1024;
mtd.eb_size = 128;
seek = (loff_t)eb * mtd.eb_size;
- expect_ioctl(MEMGETBADBLOCK, 0, &seek, sizeof(seek));
+ expect_ioctl(MEMGETBADBLOCK, 0, &seek);
int r = mtd_is_bad(&mtd, 4, eb);
assert_int_equal(r, 0);
@@ -106,7 +106,7 @@ static void test_mtd_lock(void **state)
memset(&ei, 0, sizeof(ei));
ei.start = eb * mtd.eb_size;
ei.length = mtd.eb_size;
- expect_ioctl(MEMLOCK, 0, &ei, sizeof(ei));
+ expect_ioctl(MEMLOCK, 0, &ei);
int r = mtd_lock(&mtd, 4, eb);
assert_int_equal(r, 0);
@@ -125,7 +125,7 @@ static void test_mtd_unlock(void **state)
memset(&ei, 0, sizeof(ei));
ei.start = eb * mtd.eb_size;
ei.length = mtd.eb_size;
- expect_ioctl(MEMUNLOCK, 0, &ei, sizeof(ei));
+ expect_ioctl(MEMUNLOCK, 0, &ei);
int r = mtd_unlock(&mtd, 4, eb);
assert_int_equal(r, 0);
@@ -144,7 +144,7 @@ static void test_mtd_is_locked(void **state)
memset(&ei, 0, sizeof(ei));
ei.start = eb * mtd.eb_size;
ei.length = mtd.eb_size;
- expect_ioctl(MEMISLOCKED, 0, &ei, sizeof(ei));
+ expect_ioctl(MEMISLOCKED, 0, &ei);
int r = mtd_is_locked(&mtd, 4, eb);
assert_int_equal(r, 0);
@@ -160,7 +160,7 @@ static void test_mtd_regioninfo(void **state)
int mock_fd = 4;
int regidx = 0xAA;
rr.regionindex = regidx;
- expect_ioctl(MEMGETREGIONINFO, 0, &rr, sizeof(rr));
+ expect_ioctl(MEMGETREGIONINFO, 0, &rr);
int r = mtd_regioninfo(mock_fd, regidx, &req);
assert_int_equal(r, 0);
@@ -187,12 +187,12 @@ static void test_mtd_erase_multi(void **state)
ei.length = ei64.length;
/* non offs64 first */
lib->offs64_ioctls = OFFS64_IOCTLS_NOT_SUPPORTED;
- expect_ioctl(MEMERASE, 0, &ei, sizeof(ei));
+ expect_ioctl(MEMERASE, 0, &ei);
int r = mtd_erase_multi(lib, &mtd, 4, eb, blocks);
assert_int_equal(r, 0);
lib->offs64_ioctls = OFFS64_IOCTLS_SUPPORTED;
- expect_ioctl(MEMERASE64, 0, &ei64, sizeof(ei64));
+ expect_ioctl(MEMERASE64, 0, &ei64);
r = mtd_erase_multi(lib, &mtd, 4, eb, blocks);
assert_int_equal(r, 0);
@@ -224,12 +224,12 @@ static void test_mtd_erase(void **state)
ei.length = ei64.length;
/* non offs64 first */
lib->offs64_ioctls = OFFS64_IOCTLS_NOT_SUPPORTED;
- expect_ioctl(MEMERASE, 0, &ei, sizeof(ei));
+ expect_ioctl(MEMERASE, 0, &ei);
int r = mtd_erase(lib, &mtd, 4, eb);
assert_int_equal(r, 0);
lib->offs64_ioctls = OFFS64_IOCTLS_SUPPORTED;
- expect_ioctl(MEMERASE64, 0, &ei64, sizeof(ei64));
+ expect_ioctl(MEMERASE64, 0, &ei64);
r = mtd_erase(lib, &mtd, 4, eb);
assert_int_equal(r, 0);
@@ -314,7 +314,7 @@ static void test_mtd_write_withoob(void **state)
req.usr_data = (uint64_t)(unsigned long)buf;
req.usr_oob = (uint64_t)(unsigned long)oob_data;
req.mode = mode;
- expect_ioctl(MEMWRITE, 0, &req, sizeof(req));
+ expect_ioctl(MEMWRITE, 0, &req);
int r = mtd_write(lib, &mtd, mock_fd, eb, offs, buf, len, oob_data, oob_len, mode);
assert_int_equal(r, 0);
@@ -348,12 +348,12 @@ static void test_mtd_read_oob(void **state)
oob.ptr = buf;
lib->offs64_ioctls = OFFS64_IOCTLS_NOT_SUPPORTED;
- expect_ioctl(MEMREADOOB, 0, &oob, sizeof(oob));
+ expect_ioctl(MEMREADOOB, 0, &oob);
int r = mtd_read_oob(lib, &mtd, mock_fd, start, length, buf);
assert_int_equal(r, 0);
lib->offs64_ioctls = OFFS64_IOCTLS_SUPPORTED;
- expect_ioctl(MEMREADOOB64, 0, &oob64, sizeof(oob64));
+ expect_ioctl(MEMREADOOB64, 0, &oob64);
r = mtd_read_oob(lib, &mtd, mock_fd, start, length, buf);
assert_int_equal(r, 0);
@@ -388,12 +388,12 @@ static void test_mtd_write_oob(void **state)
oob.ptr = buf;
lib->offs64_ioctls = OFFS64_IOCTLS_NOT_SUPPORTED;
- expect_ioctl(MEMWRITEOOB, 0, &oob, sizeof(oob));
+ expect_ioctl(MEMWRITEOOB, 0, &oob);
int r = mtd_write_oob(lib, &mtd, mock_fd, start, length, buf);
assert_int_equal(r, 0);
lib->offs64_ioctls = OFFS64_IOCTLS_SUPPORTED;
- expect_ioctl(MEMWRITEOOB64, 0, &oob64, sizeof(oob64));
+ expect_ioctl(MEMWRITEOOB64, 0, &oob64);
r = mtd_write_oob(lib, &mtd, mock_fd, start, length, buf);
assert_int_equal(r, 0);
diff --git a/tests/unittests/libubi_test.c b/tests/unittests/libubi_test.c
index 3e08e42..8deae91 100644
--- a/tests/unittests/libubi_test.c
+++ b/tests/unittests/libubi_test.c
@@ -54,7 +54,7 @@ static void test_ubi_leb_unmap(void **state)
{
int mock_fd = 1;
int lnum = 12;
- expect_ioctl(UBI_IOCEBUNMAP, 0, &lnum, sizeof(lnum));
+ expect_ioctl(UBI_IOCEBUNMAP, 0, &lnum);
int r = ubi_leb_unmap(mock_fd, lnum);
assert_int_equal(r, 0);
@@ -65,7 +65,7 @@ static void test_ubi_is_mapped(void **state)
{
int mock_fd = 1;
int lnum = 1;
- expect_ioctl(UBI_IOCEBISMAP, 0, &lnum, sizeof(lnum));
+ expect_ioctl(UBI_IOCEBISMAP, 0, &lnum);
int r = ubi_is_mapped(mock_fd, lnum);
assert_int_equal(r, 0);
@@ -77,7 +77,7 @@ static void test_ubi_update_start(void **state)
int mock_fd = 1;
long long bytes = 0x1234;
- expect_ioctl(UBI_IOCVOLUP, 0, &bytes, sizeof(bytes));
+ expect_ioctl(UBI_IOCVOLUP, 0, &bytes);
int r = ubi_update_start(NULL, mock_fd, bytes);
assert_int_equal(r, 0);
(void) state;
@@ -116,7 +116,7 @@ static void test_ubi_rsvol(void **state)
req.bytes = bytes;
req.vol_id = vol_id;
expect_open(node, O_RDONLY, 4);
- expect_ioctl(UBI_IOCRSVOL, 0, &req, sizeof(req));
+ expect_ioctl(UBI_IOCRSVOL, 0, &req);
expect_close(4, 0);
int r = ubi_rsvol(NULL, node, vol_id, bytes);
assert_int_equal(r, 0);
@@ -131,7 +131,7 @@ static void test_ubi_rnvols(void **state)
struct ubi_rnvol_req req;
memset(&req, 0xaf, sizeof(req));
expect_open(node, O_RDONLY, 4);
- expect_ioctl(UBI_IOCRNVOL, 0, &req, sizeof(req));
+ expect_ioctl(UBI_IOCRNVOL, 0, &req);
expect_close(4, 0);
int r = ubi_rnvols(lib, node, &req);
assert_int_equal(r, 0);
@@ -146,7 +146,7 @@ static void test_ubi_rmvol(void **state)
const char *node = "/foo";
int vol_id = 12;
expect_open(node, O_RDONLY, 4);
- expect_ioctl(UBI_IOCRMVOL, 0, &vol_id, sizeof(vol_id));
+ expect_ioctl(UBI_IOCRMVOL, 0, &vol_id);
expect_close(4, 0);
int r = ubi_rmvol(lib, node, vol_id);
assert_int_equal(r, 0);
@@ -166,7 +166,7 @@ static void test_ubi_leb_change_start(void **state)
req.lnum = lnum;
req.bytes = bytes;
req.dtype = 3;
- expect_ioctl(UBI_IOCEBCH, 0, &req, sizeof(req));
+ expect_ioctl(UBI_IOCEBCH, 0, &req);
int r = ubi_leb_change_start(lib, mock_fd, lnum, bytes);
assert_int_equal(r, 0);
@@ -209,7 +209,7 @@ static void test_ubi_mkvol(void **state)
rr.name_len = strlen(vol_name);
strncpy(rr.name, vol_name, UBI_MAX_VOLUME_NAME + 1);
expect_open(node, O_RDONLY, 3);
- expect_ioctl(UBI_IOCMKVOL, 0, &rr, sizeof(rr));
+ expect_ioctl(UBI_IOCMKVOL, 0, &rr);
expect_close(3,0);
int r = ubi_mkvol(lib, node, &req);
assert_int_equal(r, 0);
@@ -225,7 +225,7 @@ void test_ubi_remove_dev(void **state)
libubi_t lib = mock_libubi_open();
int ubi_dev = 0xAA;
expect_open(node, O_RDONLY, 4);
- expect_ioctl(UBI_IOCDET, 0, &ubi_dev, sizeof(ubi_dev));
+ expect_ioctl(UBI_IOCDET, 0, &ubi_dev);
expect_close(4,0);
int r = ubi_remove_dev(lib, node, ubi_dev);
assert_int_equal(r, 0);
@@ -247,7 +247,7 @@ void test_ubi_attach(void **state)
rr.ubi_num = 1;
rr.mtd_num = 1;
expect_open(node, O_RDONLY, 4);
- expect_ioctl(UBI_IOCATT, 0, &rr, sizeof(rr));
+ expect_ioctl(UBI_IOCATT, 0, &rr);
expect_close(4,0);
int r = ubi_attach(lib, node, &req);
@@ -266,7 +266,7 @@ void test_ubi_set_property(void **state)
memset(&req, 0, sizeof(req));
req.property = prop;
req.value = val;
- expect_ioctl(UBI_IOCSETVOLPROP, 0, &req, sizeof(req));
+ expect_ioctl(UBI_IOCSETVOLPROP, 0, &req);
int r = ubi_set_property(mock_fd, prop, val);
assert_int_equal(r,0);
diff --git a/tests/unittests/test_lib.h b/tests/unittests/test_lib.h
index f5f0f34..806a4bc 100644
--- a/tests/unittests/test_lib.h
+++ b/tests/unittests/test_lib.h
@@ -45,16 +45,15 @@ int __wrap_ioctl(int fd, unsigned long req, ...)
assert_true(fd > 0);
check_expected(req);
int retval = mock_type(int);
- void *expected_arg = mock_type(void*);
- size_t expected_len = mock_type(size_t);
+ char *expected_arg = mock_type(char*);
if (expected_arg == NULL)
return retval;
va_list ap;
va_start(ap, req);
- void *arg = va_arg(ap, void *);
+ char *arg = va_arg(ap, char *);
va_end(ap);
assert_non_null(arg);
- assert_memory_equal(expected_arg, arg, expected_len);
+ assert_memory_equal(expected_arg, arg, _IOC_SIZE(req));
return retval;
}
@@ -107,18 +106,16 @@ off_t __wrap_lseek(int fd, off_t seek, int whence)
will_return(__wrap_close, Y);\
} while(0);
-#define expect_ioctl(W,X,Y,Z) do { \
+#define expect_ioctl(W,X,Y) do { \
expect_value(__wrap_ioctl, req, W);\
will_return(__wrap_ioctl, X);\
will_return(__wrap_ioctl, Y);\
- will_return(__wrap_ioctl, Z);\
} while(0);
#define expect_ioctl_short(X,Y) do { \
expect_value(__wrap_ioctl, req, X);\
will_return(__wrap_ioctl, Y);\
will_return(__wrap_ioctl, NULL);\
- will_return(__wrap_ioctl, 0);\
} while(0);
#define expect_stat(X,Y) do { \
--
2.14.1
More information about the linux-mtd
mailing list