diff --git a/src/libmongoc/src/mongoc/mongoc-cyrus.c b/src/libmongoc/src/mongoc/mongoc-cyrus.c index 9564f7f89b..45734fb07b 100644 --- a/src/libmongoc/src/mongoc/mongoc-cyrus.c +++ b/src/libmongoc/src/mongoc/mongoc-cyrus.c @@ -115,7 +115,8 @@ _mongoc_cyrus_canon_user(sasl_conn_t *conn, // `inlen` is a string length (excluding trailing NULL). // Cyrus-SASL passes an `out` buffer of size `out_max + 1`. Assume `out_max` is the max to be safe. - if (inlen + 1 >= out_max) { + unsigned inlen_1 = 0; + if (mlib_add(&inlen_1, inlen, 1) || inlen_1 + 1 >= out_max) { MONGOC_ERROR("SASL username too large"); return SASL_BUFOVER; }