An IMAP FETCH response line indicates the size of the returned data, in
number of bytes. When that response says the data is zero bytes, libcurl
would pass on that (non-existing) data with a pointer and the size (zero)
to the deliver-data function. libcurl's deliver-data function treats zero
as a magic number and invokes strlen() on the data to figure out the
length. The strlen() is called on a heap based buffer that might not be
zero terminated so libcurl might read beyond the end of it into whatever
memory lies after (or just crash) and then deliver that to the application
as if it was actually downloaded.
Source: curl (LP Ubuntu Debian)
Upstream:released (7.56.1)
Ubuntu 12.04 ESM (Precise Pangolin):released (7.22.0-3ubuntu4.18)
Ubuntu 14.04 ESM (Trusty Tahr):released (7.35.0-1ubuntu2.12)
Ubuntu 16.04 LTS (Xenial Xerus):released (7.47.0-1ubuntu2.4)
Ubuntu 18.04 LTS (Bionic Beaver):released (7.55.1-1ubuntu2.1)
More Information

Updated: 2020-09-10 05:35:01 UTC (commit 81a23a978c4436cd99e1d040e9e73e9146876281)