summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2024-06-04 23:08:15 -0400
committer arbee <rb6502@users.noreply.github.com>2024-06-04 23:08:15 -0400
commitf569bf66e90375f571f56fb5583ed8278ff93cfc (patch)
tree8b0d6e37fab5b8cbdcbcf83c02374a18290af1bd
parent6e243e2f5c320512459f8974e4d2fed59f5cbfb3 (diff)
util/ioprocs.cpp: Count zero actual bytes written on a write call as an error. Fixes lock-up writing to a write-protected image. [R. Belmont, Peter Ferrie]
-rw-r--r--src/lib/util/ioprocs.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lib/util/ioprocs.cpp b/src/lib/util/ioprocs.cpp
index 37a958713b3..a9a26ffd313 100644
--- a/src/lib/util/ioprocs.cpp
+++ b/src/lib/util/ioprocs.cpp
@@ -797,7 +797,7 @@ std::pair<std::error_condition, std::size_t> write(write_stream &stream, void co
std::size_t written;
std::error_condition err = stream.write_some(buffer, length, written);
actual += written;
- if (err && (std::errc::interrupted != err))
+ if ((err || !actual) && (std::errc::interrupted != err))
return std::make_pair(err, actual);
buffer = reinterpret_cast<std::uint8_t const *>(buffer) + written;
length -= written;