You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
4.8 KiB
147 lines
4.8 KiB
https://github.com/tpm2-software/tpm2-tss/commit/bda22252507124bb8e466ac2f0c61d5ebed9027d
|
|
https://github.com/tpm2-software/tpm2-tss/pull/2423
|
|
https://bugs.gentoo.org/833530
|
|
|
|
From bda22252507124bb8e466ac2f0c61d5ebed9027d Mon Sep 17 00:00:00 2001
|
|
From: William Roberts <william.c.roberts@intel.com>
|
|
Date: Mon, 26 Sep 2022 15:16:15 -0500
|
|
Subject: [PATCH] test: fix usage of FILE in unit test fapi-io
|
|
|
|
The unit test had a static FILE structure used to pass to stdio FILE *
|
|
routines as a dummy value to indicate to use the __real_xxx variant of
|
|
the mocked function. This doesn't work when FILE is opaque as the
|
|
compiler cannot figure out how much storage space is needed for a FILE
|
|
struct.
|
|
|
|
Fix this by passing a dummy pointer to a data type the compiler knows
|
|
about and casting it to FILE pointer.
|
|
|
|
Fixes: #2419
|
|
|
|
Signed-off-by: William Roberts <william.c.roberts@intel.com>
|
|
---
|
|
test/unit/fapi-io.c | 30 ++++++++++++++++--------------
|
|
1 file changed, 16 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/test/unit/fapi-io.c b/test/unit/fapi-io.c
|
|
index dbadcb47..8a883a43 100644
|
|
--- a/test/unit/fapi-io.c
|
|
+++ b/test/unit/fapi-io.c
|
|
@@ -38,7 +38,9 @@
|
|
bool wrap_fcntl_test = false;
|
|
bool wrap_malloc_test = false;
|
|
bool wrap_read_test = false;
|
|
-FILE mock_stream; /**< stream will be used to activate wrapper.*/
|
|
+char _mock_stream; /**< stream will be used to activate wrapper.*/
|
|
+
|
|
+#define MOCK_STREAM ((FILE *)(&_mock_stream))
|
|
|
|
/*
|
|
* Wrapper functions for file system io.
|
|
@@ -74,7 +76,7 @@ __real_fclose(FILE *stream, ...);
|
|
int
|
|
__wrap_fclose(FILE *stream, ...)
|
|
{
|
|
- if (stream != &mock_stream) {
|
|
+ if (stream != MOCK_STREAM) {
|
|
return __real_fclose(stream);
|
|
}
|
|
return mock_type(int);
|
|
@@ -86,7 +88,7 @@ __real_fseek(FILE *stream, long offset, int whence, ...);
|
|
int
|
|
__wrap_fseek(FILE *stream, long offset, int whence, ...)
|
|
{
|
|
- if (stream != &mock_stream) {
|
|
+ if (stream != MOCK_STREAM) {
|
|
return __real_fseek(stream, offset, whence);
|
|
}
|
|
return mock_type(int);
|
|
@@ -98,7 +100,7 @@ __real_ftell(FILE *stream, ...);
|
|
long
|
|
__wrap_ftell(FILE *stream, ...)
|
|
{
|
|
- if (stream != &mock_stream) {
|
|
+ if (stream != MOCK_STREAM) {
|
|
return __real_ftell(stream);
|
|
}
|
|
return mock_type(int);
|
|
@@ -135,7 +137,7 @@ __real_fileno(FILE *stream, ...);
|
|
int
|
|
__wrap_fileno(FILE *stream, ...)
|
|
{
|
|
- if (stream != &mock_stream) {
|
|
+ if (stream != MOCK_STREAM) {
|
|
return __real_fileno(stream);
|
|
}
|
|
return 1;
|
|
@@ -179,7 +181,7 @@ check_io_read_async(void **state) {
|
|
assert_int_equal(r, TSS2_FAPI_RC_IO_ERROR);
|
|
|
|
wrap_fcntl_test = true;
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
will_return(__wrap_fcntl, -1);
|
|
will_return_always(__wrap_fclose, 0);
|
|
errno = EAGAIN;
|
|
@@ -187,8 +189,8 @@ check_io_read_async(void **state) {
|
|
r = ifapi_io_read_async(&io, "tss_unit_dummyf");
|
|
assert_int_equal(r, TSS2_FAPI_RC_IO_ERROR);
|
|
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
will_return(__wrap_fcntl, 0);
|
|
will_return(__wrap_fseek, 0);
|
|
will_return(__wrap_ftell, 1);
|
|
@@ -202,8 +204,8 @@ check_io_read_async(void **state) {
|
|
|
|
wrap_malloc_test = false;
|
|
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
will_return(__wrap_fcntl, 0);
|
|
will_return(__wrap_fseek, 0);
|
|
will_return(__wrap_ftell, 1);
|
|
@@ -236,7 +238,7 @@ check_io_read_finish(void **state) {
|
|
will_return_always(__wrap_fclose, 0);
|
|
io.char_buffer = &io_char_buffer[0];
|
|
io.buffer_length = 10;
|
|
- io.stream = &mock_stream;
|
|
+ io.stream = MOCK_STREAM;
|
|
errno = EAGAIN;
|
|
r = ifapi_io_read_finish(&io, &buffer[0], &count);
|
|
assert_int_equal(r, TSS2_FAPI_RC_TRY_AGAIN);
|
|
@@ -298,7 +300,7 @@ check_io_write_async(void **state) {
|
|
assert_int_equal(r, TSS2_FAPI_RC_IO_ERROR);
|
|
|
|
wrap_fcntl_test = true;
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
will_return(__wrap_fcntl, -1);
|
|
|
|
errno = EAGAIN;
|
|
@@ -306,7 +308,7 @@ check_io_write_async(void **state) {
|
|
assert_int_equal(r, TSS2_FAPI_RC_IO_ERROR);
|
|
|
|
io.char_rbuffer = NULL;
|
|
- will_return(__wrap_fopen, &mock_stream);
|
|
+ will_return(__wrap_fopen, MOCK_STREAM);
|
|
will_return(__wrap_fcntl, 0);
|
|
will_return(__wrap_fcntl, 0);
|
|
will_return(__wrap_fcntl, -1);
|
|
@@ -345,7 +347,7 @@ check_io_write_finish(void **state) {
|
|
will_return_always(__wrap_fclose, 0);
|
|
|
|
wrap_write_test = true;
|
|
- io.stream = &mock_stream;
|
|
+ io.stream = MOCK_STREAM;
|
|
will_return(__wrap_write, -1);
|
|
errno = EAGAIN;
|
|
r = ifapi_io_write_finish(&io);
|
|
--
|
|
2.35.1
|
|
|