Skip to content

Commit 971f6fa

Browse files
committed
CDRIVER-907 crash retrieving invalid server description
1 parent ec47e54 commit 971f6fa

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/mongoc/mongoc-server-description.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,14 +416,18 @@ mongoc_server_description_handle_ismaster (
416416
*
417417
* mongoc_server_description_new_copy --
418418
*
419+
* A copy of a server description that you must destroy, or NULL.
420+
*
419421
*-------------------------------------------------------------------------
420422
*/
421423
mongoc_server_description_t *
422424
mongoc_server_description_new_copy (const mongoc_server_description_t *description)
423425
{
424426
mongoc_server_description_t *copy;
425427

426-
BSON_ASSERT (description);
428+
if (!description) {
429+
return NULL;
430+
}
427431

428432
copy = (mongoc_server_description_t *)bson_malloc0(sizeof (*copy));
429433

tests/test-mongoc-topology.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,19 @@ test_multiple_selection_errors (void)
757757
}
758758

759759

760+
static void
761+
test_invalid_server_id (void)
762+
{
763+
mongoc_client_t *client;
764+
765+
client = test_framework_client_new ();
766+
767+
assert (!mongoc_topology_server_by_id (client->topology, 99999));
768+
769+
mongoc_client_destroy (client);
770+
}
771+
772+
760773
void
761774
test_topology_install (TestSuite *suite)
762775
{
@@ -774,4 +787,5 @@ test_topology_install (TestSuite *suite)
774787
TestSuite_Add (suite, "/Topology/connect_timeout/single/try_once", test_connect_timeout_single);
775788
TestSuite_Add (suite, "/Topology/connect_timeout/single/try_once_false", test_connect_timeout_try_once_false);
776789
TestSuite_Add (suite, "/Topology/multiple_selection_errors", test_multiple_selection_errors);
790+
TestSuite_Add (suite, "/Topology/invalid_server_id", test_invalid_server_id);
777791
}

0 commit comments

Comments
 (0)