aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/hash.cc
diff options
context:
space:
mode:
authorWill Dietz <w@wdtz.org>2018-03-01 15:00:58 -0600
committerWill Dietz <w@wdtz.org>2018-03-02 10:52:04 -0600
commitc89a3d536891da84403b025c70f1ae225faa0eb2 (patch)
treec019b3b8ead8a0c609d9a54db70e27904811863e /src/libutil/hash.cc
parent3748a0ca1e9406ff4a701b4f0e1f506c008c4137 (diff)
don't allocate large buffers on the stack
Diffstat (limited to 'src/libutil/hash.cc')
-rw-r--r--src/libutil/hash.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libutil/hash.cc b/src/libutil/hash.cc
index 75e476755..8267481b8 100644
--- a/src/libutil/hash.cc
+++ b/src/libutil/hash.cc
@@ -256,12 +256,12 @@ Hash hashFile(HashType ht, const Path & path)
AutoCloseFD fd = open(path.c_str(), O_RDONLY | O_CLOEXEC);
if (!fd) throw SysError(format("opening file '%1%'") % path);
- unsigned char buf[8192];
+ std::vector<unsigned char> buf(8192);
ssize_t n;
- while ((n = read(fd.get(), buf, sizeof(buf)))) {
+ while ((n = read(fd.get(), buf.data(), buf.size()))) {
checkInterrupt();
if (n == -1) throw SysError(format("reading file '%1%'") % path);
- update(ht, ctx, buf, n);
+ update(ht, ctx, buf.data(), n);
}
finish(ht, ctx, hash.hash);