libcurl provides several different backends for resolving hostnames, selected
at build time. If it is built to use the synchronous resolver, it allows name
resolves to time-out slow operations using alarm()
and siglongjmp()
.
When doing this, libcurl used a global buffer that was not mutex protected and a multi-threaded application might therefore crash or otherwise misbehave.