authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-09-13 11:25:31-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-09-13 11:25:31-04:00
logd332311e53a074eef77c61412ee59b5f5fdc3891
tree7fd08ebf23634ef8fb76b1f59906a852d8faf5a9
parente70c543bc4c097d7c3287feb0f233a13d4dc3829
parente3f0ba4984f932cd3a9a99504d540b4cd8393364
signaturelock-open Commit is signed but in an unrecognized format.

Merge branch 'kristate-cache-invalidformat-issue1510'


3 files changed, 15 insertions(+), 4 deletions(-)

src/cache_hash.cpp+3-3
......@@ -337,12 +337,12 @@ Error cache_hit(CacheHash *ch, Buf *out_digest) {
337337 return ErrorInvalidFormat;
338338 }
339339
340 Optional<Slice<uint8_t>> opt_file_path = SplitIterator_next(&it);
341 if (!opt_file_path.is_some) {
340 Slice<uint8_t> file_path = SplitIterator_rest(&it);
341 if (file_path.len == 0) {
342342 os_file_close(ch->manifest_file);
343343 return ErrorInvalidFormat;
344344 }
345 Buf *this_path = buf_create_from_slice(opt_file_path.value);
345 Buf *this_path = buf_create_from_slice(file_path);
346346 if (chf->path != nullptr && !buf_eql_buf(this_path, chf->path)) {
347347 os_file_close(ch->manifest_file);
348348 return ErrorInvalidFormat;
src/util.cpp+10
......@@ -78,6 +78,16 @@ Optional<Slice<uint8_t>> SplitIterator_next(SplitIterator *self) {
7878 return Optional<Slice<uint8_t>>::some(self->buffer.slice(start, end));
7979}
8080
81// Ported from std/mem.zig
82Slice<uint8_t> SplitIterator_rest(SplitIterator *self) {
83 // move to beginning of token
84 size_t index = self->index;
85 while (index < self->buffer.len && SplitIterator_isSplitByte(self, self->buffer.ptr[index])) {
86 index += 1;
87 }
88 return self->buffer.sliceFrom(index);
89}
90
8191// Ported from std/mem.zig
8292SplitIterator memSplit(Slice<uint8_t> buffer, Slice<uint8_t> split_bytes) {
8393 return SplitIterator{0, buffer, split_bytes};
src/util.hpp+2-1
......@@ -263,7 +263,8 @@ struct SplitIterator {
263263};
264264
265265bool SplitIterator_isSplitByte(SplitIterator *self, uint8_t byte);
266Optional<Slice<uint8_t>> SplitIterator_next(SplitIterator *self);
266Optional< Slice<uint8_t> > SplitIterator_next(SplitIterator *self);
267Slice<uint8_t> SplitIterator_rest(SplitIterator *self);
267268SplitIterator memSplit(Slice<uint8_t> buffer, Slice<uint8_t> split_bytes);
268269
269270#endif