Skip to content

CDRIVER-4599 Reducing Warnings - MSVC and MinGW Compilation Warnings #1229

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 102 commits into from
Apr 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
61a4a8d
Disable C4756 when compiling with VS 2013 or older
eramongodb Apr 3, 2023
fbaadfa
client-side-encryption-auto-decryption.c: address C4267 size_t conver…
eramongodb Mar 8, 2023
fdb04d7
client-side-encryption-explicit.c: address C4267 size_t conversion wa…
eramongodb Mar 8, 2023
6f08348
client-side-encryption-helpers.c: address C4267 size_t conversion war…
eramongodb Mar 8, 2023
cded373
mcd-azure.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
b4a8601
mcd-azure.c: address C4028 parameter inconsistency warnings
eramongodb Mar 13, 2023
f4bbf51
mongoc-async-cmd.c: address C4018 signedness mismatch warnings
eramongodb Mar 16, 2023
ce10068
mongoc-bulk-operation.c: address C4018 signedness mismatch warnings
eramongodb Mar 16, 2023
a969e31
mongoc-client-side-encryption.c: address C4018 signedness mismatch wa…
eramongodb Mar 8, 2023
b13ba35
mongoc-client-side-encryption.c: address C4028 parameter inconsistenc…
eramongodb Mar 13, 2023
9cbe8fd
mongoc-client.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
db70dc6
mongoc-cluster.c: address C4018 signedness mismatch warnings
eramongodb Mar 8, 2023
6bbfe00
mongoc-cluster.c: address C4267 size_t conversion warnings
eramongodb Mar 8, 2023
17c9acd
mongoc-collection.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
f66c026
mongoc-compression.c: address C4267 size_t conversion warnings
eramongodb Mar 8, 2023
b941bbb
mongoc-crypt.c: address C4018 signedness mismatch warnings
eramongodb Mar 8, 2023
95570e3
mongoc-crypt.c: address C4244 narrowing conversion warnings
eramongodb Mar 8, 2023
916ac52
mongoc-cyrus.c: address 4267 size_t conversion warnings
eramongodb Mar 13, 2023
1f09a59
mongoc-gridfs-bucket-file.c: address C4267 size_t conversion warnings
eramongodb Mar 8, 2023
8ad0811
mongoc-gridfs-file.c: address C4018 signedness mismatch warnings
eramongodb Mar 8, 2023
fb048a8
mongoc-gridfs-file.c: address C4244 narrowing conversion warnings
eramongodb Mar 8, 2023
13e8b62
mongoc-gridfs-file.c: address scan-build uninitialized value warnings
eramongodb Mar 10, 2023
152e87e
mongoc-handshake.c: address C4018 signedness mismatch warnings
eramongodb Mar 8, 2023
b285931
mongoc-http.c: address C4244 narrowing conversion warnings
eramongodb Mar 8, 2023
238a7ad
mongoc-http.c: address C4267 size_t conversion warnings
eramongodb Mar 8, 2023
0f6e8ec
mongoc-log.c: address C4018 signedness mismatch warnings
eramongodb Mar 16, 2023
d34b80e
mongoc-opts-helpers.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
973f5fc
mongoc-rpc.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
c79c389
mongoc-scram.c: address C4018 signedness mismatch warnings
eramongodb Mar 9, 2023
cfb069d
mongoc-scram.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
14319eb
mongoc-server-monitor.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
c2b8257
mongoc-server-monitor.c: address C4244 narrowing conversion warnings
eramongodb Mar 9, 2023
7ecd72c
mongoc-server-monitor.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
67ac025
mongoc-set.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
cbe99ec
mongoc-set.c: address C4244 narrowing conversion warnings
eramongodb Mar 9, 2023
fb4ebdf
mongoc-set.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
4905d16
mongoc-shared.c: address C4028 parameter inconsistency warnings
eramongodb Mar 13, 2023
c3209c7
mongoc-socket.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
002de61
mongoc-socket.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
d9b8c5f
mongoc-stream-file.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
a84964a
mongoc-stream-socket.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
36a3035
mongoc-stream-tls-openssl.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
493760b
mongoc-stream-tls-openssl.c: address C4244 narrowing conversion warnings
eramongodb Mar 13, 2023
d371d93
mongoc-stream-tls-openssl.c: address C4267 size_t conversion warnings
eramongodb Mar 13, 2023
1743815
mongoc-stream-tls-secure-channel.c: address C4018 signedness mismatch…
eramongodb Mar 9, 2023
5d061d7
mongoc-stream-tls-secure-channel.c: address C4244 narrowing conversio…
eramongodb Mar 9, 2023
25f64ea
mongoc-stream-tls.c: address C4244 narrowing conversion warnings
eramongodb Mar 9, 2023
4ec69eb
mongoc-stream.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
c4ba2e4
mongoc-topology-background-monitoring.c: address C4018 signedness mis…
eramongodb Mar 8, 2023
50e278d
mongoc-topology-background-monitoring.c: address C4267 size_t convers…
eramongodb Mar 6, 2023
7fb0938
mongoc-topology-description.c: address C4018 signedness mismatch warn…
eramongodb Mar 9, 2023
65dcf88
mongoc-topology-description.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
326e046
mongoc-topology-scanner.c: address C4267 size_t conversion warnings
eramongodb Mar 9, 2023
8fa8b5e
mongoc-topology.c: address C4028 parameter inconsistency warnings
eramongodb Mar 13, 2023
fec7b3f
mongoc-topology.c: address C4244 narrowing conversion warnings
eramongodb Mar 9, 2023
3fe8da2
mongoc-util.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
8f690cc
mongoc-util.c: address scan build null pointer warnings
eramongodb Mar 13, 2023
b43fc78
mongoc-write-command-legacy.c: address C4018 signedness mismatch warn…
eramongodb Mar 9, 2023
2c6b780
mongoc-write-command.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
47c25b5
mongoc-write-command.c: address C4018 signedness mismatch warnings
eramongodb Mar 10, 2023
ec1b5a9
op-msg.def: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
407af02
service-gcp.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
1629908
TestSuite.c: address C4018 signedness mismatch warnings
eramongodb Mar 16, 2023
385df8e
entity-map.c: address -Wstrict-prototypes warnings
eramongodb Mar 13, 2023
d1496f9
json-test-operations.c: address C4018 signedness mismatch warnings
eramongodb Mar 10, 2023
66d45f6
json-test-operations.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
8362c1b
json-test.c: address C4018 signedness mismatch warnings
eramongodb Mar 10, 2023
296c3dc
mock-rs.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
22a574c
mock-server.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
0e333a2
operation.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
16cae97
operation.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
a6d75ce
operation.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
9a4fe3f
request.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
026d142
runner.c: address C4018 signedness mismatch warnings
eramongodb Mar 16, 2023
85ff7ec
test-bson.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
fcd6dd0
test-conveniences.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
76a038e
test-happy-eyeballs.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
e2d5172
test-libmongoc.c: address -Wunused-parameter warnings
eramongodb Apr 3, 2023
d9ac422
test-libmongoc.c: suppress C4091 warning generated by DbgHelp.h
eramongodb Apr 3, 2023
a8bff34
test-mongoc-aws.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
6ca6bac
test-mongoc-bulk.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
12367ed
test-mongoc-client-session.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
508ef0b
test-mongoc-client-side-encryption.c: address C4267 size_t conversion…
eramongodb Mar 10, 2023
039b14d
test-mongoc-connection-uri.c: address C4244 narrowing conversion warn…
eramongodb Mar 10, 2023
aa301f6
test-mongoc-dns.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
e1b7e29
test-mongoc-dns.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
60b4f84
test-mongoc-gridfs-bucket.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
c40d2ef
test-mongoc-gridfs.c: address C4244 size_t conversion warnings
eramongodb Apr 3, 2023
08bcc4b
test-mongoc-handshake.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
4e05b64
test-mongoc-interrupt.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
285c7e7
test-mongoc-long-namespace.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
3c3e41f
test-mongoc-mongohouse.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
014a10d
test-mongoc-read-write-concern.c: address C4244 narrowing conversion …
eramongodb Mar 10, 2023
489e371
test-mongoc-rpc.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
d1ff6f9
test-mongoc-sdam.c: address -Wmissing-braces warnings
eramongodb Mar 10, 2023
d943e55
test-mongoc-sdam.c: address C4018 signedness mismatch warnings
eramongodb Apr 3, 2023
4005e2f
test-mongoc-sdam.c: address C4267 size_t conversion warnings
eramongodb Mar 10, 2023
7c4340c
test-mongoc-socket.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
424bbca
test-mongoc-topology.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
31615b6
test-mongoc-uri.c: address C4244 narrowing conversion warnings
eramongodb Mar 10, 2023
e676182
test-mongoc-util.c: address C4267 size_t conversion warnings
eramongodb Mar 16, 2023
29a4df6
CDRIVER-4263: address C4996 deprecated function warnings
eramongodb Apr 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/libbson/tests/test-bson.c
Original file line number Diff line number Diff line change
Expand Up @@ -2474,7 +2474,6 @@ static void
test_bson_as_json_string (void)
{
bson_t *all_types;
int i;
char *actual;
const char *expected =
"{ \"double\" : { \"$numberDouble\" : \"1.0\" }, \"string\" : "
Expand All @@ -2498,9 +2497,9 @@ test_bson_as_json_string (void)
all_types = bson_with_all_types ();
actual = bson_as_canonical_extended_json (all_types, NULL);

for (i = 0; i < strlen (expected); i++) {
for (size_t i = 0u; i < strlen (expected); i++) {
if (expected[i] != actual[i]) {
test_error ("character mismatch at %d. Expected: %s, got %s",
test_error ("character mismatch at %zu. Expected: %s, got %s",
i,
expected,
actual);
Expand Down
7 changes: 7 additions & 0 deletions src/libmongoc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,13 @@ endif ()

if (ENABLE_TESTS)
add_library (test-libmongoc-lib STATIC ${test-libmongoc-sources})
if (MSVC AND MSVC_VERSION VERSION_LESS 1900)
message (STATUS "Disabling warning C4756 for VS 2013 and older")
# Macro constant INFINITY triggers constant arithmetic overflow warnings in
# VS 2013, but VS 2013 doesn't support inline warning suppression.
# Remove once support for VS 2013 is dropped.
target_compile_options(test-libmongoc-lib PRIVATE /wd4756)
endif ()
target_link_libraries (test-libmongoc-lib PUBLIC mongoc_static)
# We have tests that test our deprecated api.
target_compile_options (test-libmongoc-lib
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@ main (void)
goto fail;
}

const size_t len = strlen (to_encrypt.value.v_utf8.str);
BSON_ASSERT (bson_in_range_unsigned (uint32_t, len));

/* Explicitly encrypt a field. */
encrypt_opts = mongoc_client_encryption_encrypt_opts_new ();
mongoc_client_encryption_encrypt_opts_set_algorithm (
Expand All @@ -174,7 +177,7 @@ main (void)
encrypt_opts, "mongoc_encryption_example_4");
to_encrypt.value_type = BSON_TYPE_UTF8;
to_encrypt.value.v_utf8.str = "123456789";
to_encrypt.value.v_utf8.len = strlen (to_encrypt.value.v_utf8.str);
to_encrypt.value.v_utf8.len = (uint32_t) len;

ret = mongoc_client_encryption_encrypt (
client_encryption, &to_encrypt, encrypt_opts, &encrypted_field, &error);
Expand Down
5 changes: 4 additions & 1 deletion src/libmongoc/examples/client-side-encryption-explicit.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,14 +138,17 @@ main (void)
goto fail;
}

const size_t len = strlen (to_encrypt.value.v_utf8.str);
BSON_ASSERT (bson_in_range_unsigned (uint32_t, len));

/* Explicitly encrypt a field */
encrypt_opts = mongoc_client_encryption_encrypt_opts_new ();
mongoc_client_encryption_encrypt_opts_set_algorithm (
encrypt_opts, MONGOC_AEAD_AES_256_CBC_HMAC_SHA_512_DETERMINISTIC);
mongoc_client_encryption_encrypt_opts_set_keyid (encrypt_opts, &datakey_id);
to_encrypt.value_type = BSON_TYPE_UTF8;
to_encrypt.value.v_utf8.str = "123456789";
to_encrypt.value.v_utf8.len = strlen (to_encrypt.value.v_utf8.str);
to_encrypt.value.v_utf8.len = (uint32_t) len;

ret = mongoc_client_encryption_encrypt (
client_encryption, &to_encrypt, encrypt_opts, &encrypted_field, &error);
Expand Down
16 changes: 7 additions & 9 deletions src/libmongoc/examples/client-side-encryption-helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,24 @@
uint8_t *
hex_to_bin (const char *hex, uint32_t *len)
{
int i;
int hex_len;
uint8_t *out;

hex_len = strlen (hex);
const size_t hex_len = strlen (hex);
if (hex_len % 2 != 0) {
return NULL;
}

*len = hex_len / 2;
out = bson_malloc0 (*len);
BSON_ASSERT (bson_in_range_unsigned (uint32_t, hex_len / 2u));

*len = (uint32_t) (hex_len / 2u);
uint8_t *const out = bson_malloc0 (*len);

for (i = 0; i < hex_len; i += 2) {
for (size_t i = 0u; i < hex_len; i += 2u) {
uint32_t hex_char;

if (1 != sscanf (hex + i, "%2x", &hex_char)) {
bson_free (out);
return NULL;
}
out[i / 2] = (uint8_t) hex_char;
out[i / 2u] = (uint8_t) hex_char;
}
return out;
}
Expand Down
4 changes: 2 additions & 2 deletions src/libmongoc/src/mongoc/mcd-azure.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ mcd_azure_imds_request_destroy (mcd_azure_imds_request *req)
bson_free (req->_owned_path);
bson_free (req->_owned_host);
bson_free (req->_owned_headers);
*req = (mcd_azure_imds_request){0};
*req = MCD_AZURE_IMDS_REQUEST_INIT;
}

bool
Expand Down Expand Up @@ -175,7 +175,7 @@ mcd_azure_access_token_from_imds (mcd_azure_access_token *const out,
mongoc_http_response_t resp;
_mongoc_http_response_init (&resp);

mcd_azure_imds_request req = {0};
mcd_azure_imds_request req = MCD_AZURE_IMDS_REQUEST_INIT;
mcd_azure_imds_request_init (
&req, opt_imds_host, opt_port, opt_extra_headers);

Expand Down
17 changes: 12 additions & 5 deletions src/libmongoc/src/mongoc/mcd-azure.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,13 @@ typedef struct mcd_azure_imds_request {
char *_owned_headers;
} mcd_azure_imds_request;

#define MCD_AZURE_IMDS_REQUEST_INIT \
(mcd_azure_imds_request) \
{ \
.req = {0}, ._owned_path = NULL, ._owned_host = NULL, \
._owned_headers = NULL, \
}

/**
* @brief Initialize a new IMDS HTTP request
*
Expand All @@ -92,10 +99,10 @@ typedef struct mcd_azure_imds_request {
* @note Currently only supports the vault.azure.net resource
*/
void
mcd_azure_imds_request_init (mcd_azure_imds_request *out,
const char *opt_imds_host,
mcd_azure_imds_request_init (mcd_azure_imds_request *req,
const char *const opt_imds_host,
int opt_port,
const char *opt_extra_headers);
const char *const opt_extra_headers);

/**
* @brief Destroy an IMDS request created with mcd_azure_imds_request_init()
Expand All @@ -121,8 +128,8 @@ mcd_azure_imds_request_destroy (mcd_azure_imds_request *req);
* @note Currently only supports the vault.azure.net resource
*/
bool
mcd_azure_access_token_from_imds (mcd_azure_access_token *out,
const char *opt_imds_host,
mcd_azure_access_token_from_imds (mcd_azure_access_token *const out,
const char *const opt_imds_host,
int opt_port,
const char *opt_extra_headers,
bson_error_t *error);
Expand Down
7 changes: 4 additions & 3 deletions src/libmongoc/src/mongoc/mongoc-async-cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -311,13 +311,12 @@ _mongoc_async_cmd_phase_send (mongoc_async_cmd_t *acmd)
size_t total_bytes = 0;
size_t offset;
ssize_t bytes;
int i;
/* if a continued write, then iovec will be set to a temporary copy */
bool used_temp_iovec = false;
mongoc_iovec_t *iovec = acmd->iovec;
size_t niovec = acmd->niovec;

for (i = 0; i < acmd->niovec; i++) {
for (size_t i = 0u; i < acmd->niovec; i++) {
total_bytes += acmd->iovec[i].iov_len;
}

Expand All @@ -327,8 +326,10 @@ _mongoc_async_cmd_phase_send (mongoc_async_cmd_t *acmd)
* iovec entry to be written. */
offset = acmd->bytes_written;

size_t i = 0u;

/* subtract the lengths of all iovec entries written so far. */
for (i = 0; i < acmd->niovec; i++) {
for (i = 0u; i < acmd->niovec; i++) {
if (offset < acmd->iovec[i].iov_len) {
break;
}
Expand Down
6 changes: 3 additions & 3 deletions src/libmongoc/src/mongoc/mongoc-buffer-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,20 +55,20 @@ bool
_mongoc_buffer_append_from_stream (mongoc_buffer_t *buffer,
mongoc_stream_t *stream,
size_t size,
int32_t timeout_msec,
int64_t timeout_msec,
bson_error_t *error);

ssize_t
_mongoc_buffer_try_append_from_stream (mongoc_buffer_t *buffer,
mongoc_stream_t *stream,
size_t size,
int32_t timeout_msec);
int64_t timeout_msec);

ssize_t
_mongoc_buffer_fill (mongoc_buffer_t *buffer,
mongoc_stream_t *stream,
size_t min_bytes,
int32_t timeout_msec,
int64_t timeout_msec,
bson_error_t *error);

void
Expand Down
78 changes: 56 additions & 22 deletions src/libmongoc/src/mongoc/mongoc-buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ bool
_mongoc_buffer_append_from_stream (mongoc_buffer_t *buffer,
mongoc_stream_t *stream,
size_t size,
int32_t timeout_msec,
int64_t timeout_msec,
bson_error_t *error)
{
uint8_t *buf;
Expand All @@ -197,18 +197,28 @@ _mongoc_buffer_append_from_stream (mongoc_buffer_t *buffer,

BSON_ASSERT ((buffer->len + size) <= buffer->datalen);

ret = mongoc_stream_read (stream, buf, size, size, timeout_msec);
if (ret != size) {
if (BSON_UNLIKELY (!bson_in_range_signed (int32_t, timeout_msec))) {
// CDRIVER-4589
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"Failed to read %" PRIu64
" bytes: socket error or timeout",
(uint64_t) size);
"timeout_msec value %" PRIu64
" exceeds supported 32-bit range",
timeout_msec);
RETURN (false);
}

buffer->len += ret;
ret = mongoc_stream_read (stream, buf, size, size, (int32_t) timeout_msec);
if (bson_cmp_not_equal_su (ret, size)) {
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"Failed to read %zu bytes: socket error or timeout",
size);
RETURN (false);
}

buffer->len += (size_t) ret;

RETURN (true);
}
Expand All @@ -229,7 +239,7 @@ ssize_t
_mongoc_buffer_fill (mongoc_buffer_t *buffer,
mongoc_stream_t *stream,
size_t min_bytes,
int32_t timeout_msec,
int64_t timeout_msec,
bson_error_t *error)
{
ssize_t ret;
Expand All @@ -244,7 +254,8 @@ _mongoc_buffer_fill (mongoc_buffer_t *buffer,
BSON_ASSERT (buffer->datalen);

if (min_bytes <= buffer->len) {
RETURN (buffer->len);
BSON_ASSERT (bson_in_range_unsigned (ssize_t, buffer->len));
RETURN ((ssize_t) buffer->len);
}

min_bytes -= buffer->len;
Expand All @@ -257,31 +268,46 @@ _mongoc_buffer_fill (mongoc_buffer_t *buffer,

avail_bytes = buffer->datalen - buffer->len;

ret = mongoc_stream_read (
stream, &buffer->data[buffer->len], avail_bytes, min_bytes, timeout_msec);
if (BSON_UNLIKELY (!bson_in_range_signed (int32_t, timeout_msec))) {
// CDRIVER-4589
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"timeout_msec value %" PRIu64
" exceeds supported 32-bit range",
timeout_msec);
RETURN (false);
}

ret = mongoc_stream_read (stream,
&buffer->data[buffer->len],
avail_bytes,
min_bytes,
(int32_t) timeout_msec);

if (ret == -1) {
if (ret < 0) {
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"Failed to buffer %u bytes",
(unsigned) min_bytes);
"Failed to buffer %zu bytes",
min_bytes);
RETURN (-1);
}

buffer->len += ret;
buffer->len += (size_t) ret;

if (buffer->len < min_bytes) {
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"Could only buffer %u of %u bytes",
(unsigned) buffer->len,
(unsigned) min_bytes);
"Could only buffer %zu of %zu bytes",
buffer->len,
min_bytes);
RETURN (-1);
}

RETURN (buffer->len);
BSON_ASSERT (bson_in_range_unsigned (ssize_t, buffer->len));
RETURN ((ssize_t) buffer->len);
}


Expand All @@ -302,7 +328,7 @@ ssize_t
_mongoc_buffer_try_append_from_stream (mongoc_buffer_t *buffer,
mongoc_stream_t *stream,
size_t size,
int32_t timeout_msec)
int64_t timeout_msec)
{
uint8_t *buf;
ssize_t ret;
Expand All @@ -326,10 +352,18 @@ _mongoc_buffer_try_append_from_stream (mongoc_buffer_t *buffer,

BSON_ASSERT ((buffer->len + size) <= buffer->datalen);

ret = mongoc_stream_read (stream, buf, size, 0, timeout_msec);
if (BSON_UNLIKELY (!bson_in_range_signed (int32_t, timeout_msec))) {
// CDRIVER-4589
MONGOC_ERROR ("timeout_msec value %" PRIu64
" exceeds supported 32-bit range",
timeout_msec);
RETURN (-1);
}

ret = mongoc_stream_read (stream, buf, size, 0, (int32_t) timeout_msec);

if (ret > 0) {
buffer->len += ret;
buffer->len += (size_t) ret;
}

RETURN (ret);
Expand Down
6 changes: 2 additions & 4 deletions src/libmongoc/src/mongoc/mongoc-bulk-operation.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,9 @@ void
mongoc_bulk_operation_destroy (mongoc_bulk_operation_t *bulk) /* IN */
{
mongoc_write_command_t *command;
int i;

if (bulk) {
for (i = 0; i < bulk->commands.len; i++) {
for (size_t i = 0; i < bulk->commands.len; i++) {
command =
&_mongoc_array_index (&bulk->commands, mongoc_write_command_t, i);
_mongoc_write_command_destroy (command);
Expand Down Expand Up @@ -750,7 +749,6 @@ mongoc_bulk_operation_execute (mongoc_bulk_operation_t *bulk, /* IN */
mongoc_server_stream_t *server_stream;
bool ret;
uint32_t offset = 0;
int i;

ENTRY;

Expand Down Expand Up @@ -807,7 +805,7 @@ mongoc_bulk_operation_execute (mongoc_bulk_operation_t *bulk, /* IN */
GOTO (err);
}

for (i = 0; i < bulk->commands.len; i++) {
for (size_t i = 0u; i < bulk->commands.len; i++) {
if (bulk->server_id) {
server_stream =
mongoc_cluster_stream_for_server (cluster,
Expand Down
Loading