Skip to content

Commit 01101f4

Browse files
authored
CDRIVER-5641: Build fix for _FORTIFY_SOURCE (#1899)
1 parent 1126b6e commit 01101f4

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

Diff for: src/libbson/tests/test-bson-vector.c

+12-2
Original file line numberDiff line numberDiff line change
@@ -1379,14 +1379,24 @@ test_bson_vector_example_packed_bit_view (void)
13791379
} else \
13801380
((void) 0)
13811381

1382+
#if defined(__USE_FORTIFY_LEVEL) && __USE_FORTIFY_LEVEL > 0
1383+
// Prevent memcpy size overflows even in dead code
1384+
#define MAX_TESTABLE_COPY_COUNT (SIZE_MAX / 2u / sizeof (float))
1385+
#else
1386+
// Allow dead code to contain an oversized or overflowing memcpy
1387+
#define MAX_TESTABLE_COPY_COUNT SIZE_MAX
1388+
#endif
1389+
13821390
#define TEST_BSON_VECTOR_EDGE_CASES_RW_COMMON(_view, _alloc_size, _v, _v_size, _read, _write) \
13831391
if (true) { \
13841392
TEST_BSON_VECTOR_RW (false, (_view), (_v), (_alloc_size) + 1u, 0, (_read), (_write)); \
13851393
TEST_BSON_VECTOR_RW (true, (_view), (_v), (_v_size), (_alloc_size) - (_v_size), (_read), (_write)); \
13861394
TEST_BSON_VECTOR_RW (false, (_view), (_v), (_v_size), (_alloc_size) - (_v_size) + 1u, (_read), (_write)); \
13871395
TEST_BSON_VECTOR_RW (false, (_view), (_v), (_v_size) + 1u, (_alloc_size) - (_v_size), (_read), (_write)); \
1388-
TEST_BSON_VECTOR_RW (false, (_view), (_v), SIZE_MAX, (_alloc_size) - (_v_size), (_read), (_write)); \
1389-
TEST_BSON_VECTOR_RW (false, (_view), (_v), SIZE_MAX, (_alloc_size) - (_v_size) + 1u, (_read), (_write)); \
1396+
TEST_BSON_VECTOR_RW ( \
1397+
false, (_view), (_v), MAX_TESTABLE_COPY_COUNT, (_alloc_size) - (_v_size), (_read), (_write)); \
1398+
TEST_BSON_VECTOR_RW ( \
1399+
false, (_view), (_v), MAX_TESTABLE_COPY_COUNT, (_alloc_size) - (_v_size) + 1u, (_read), (_write)); \
13901400
TEST_BSON_VECTOR_RW (true, (_view), (_v), (_v_size), 0, (_read), (_write)); \
13911401
} else \
13921402
((void) 0)

0 commit comments

Comments
 (0)