Explicitly handle zero-byte NTLM buffer writes
r558579 changed the backing store of NTLM writes from being a
std::basic_string<uint8_t> to a std::vector<uint8_t>, to better align
with its purpose. This change had the effect of causing .data() to now
return nullptr when .size() == 0, rather than the previous behaviour,
in which .data() would return a 1-byte buffer that was a NUL ('\0')
terminator - the consequence of using std::basic_string<>.
This had the effect on writes which expected zero-byte writes (aka
no-ops) to succeed, in that GetBufferPtr() now returned nullptr, rather
than a valid pointer. Since zero-byte memcpys immediately follow, this
needs to be explicitly handled, as memcpy() requires both pointers be
valid, even for zero-byte writes.
BUG=843066
Change-Id: I9ff8f825469142da31abc866c81f0418ae25f93f
Reviewed-on: https://chromium-review.googlesource.com/1059449
Commit-Queue: Ryan Sleevi <rsleevi@chromium.org>
Reviewed-by:  Asanka Herath <asanka@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558812}
Asanka Herath <asanka@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558812}
Showing
Please register or sign in to comment