-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Internal Code
-
None
-
Fully Compatible
-
ALL
-
v4.4
-
Service arch 2020-04-20
`fmt::formatter::format` writes into and advances an output iterator obtained by `ctx.out()`. It has to return the advanced output iterator. But we return the `ctx.out()`, not the copy we advanced.
This yielded UB in a toolchain validation build against mongo 4.2 on
“Amazon Linux 1 2018.03" the build image.
[https://logkeeper.mongodb.org/lobster/build/24a6f9b5ad70e8fbfc9bed6e0ccf388e/test/5e8a1e02be07c446740c1d7f#bookmarks=0%2C19%2C67
]
[cpp_unit_test:network_test] 2020-04-05T18:05:54.634+0000 2020-04-05T18:05:54.634+0000 E - [main] Throwing exception: Expected fmt::format("{}", hp) == hps (1.2.3.4:2\0\0\0\0 == 1.2.3.4:27017) @src/mongo/util/net/hostandport_test.cpp:139
[cpp_unit_test:network_test] 2020-04-05T18:05:54.634+0000 2020-04-05T18:05:54.634+0000 I - [main] FAIL: Fmt Expected fmt::format("{}", hp) == hps (1.2.3.4:2\0\0\0\0 == 1.2.3.4:27017) @src/mongo/util/net/hostandport_test.cpp:139 in test Fmt