diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2020-11-09 14:45:57 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2020-11-09 14:45:57 -0800 |
commit | cca2f79dfeb492926bd41619bd2ef931f77d00da (patch) | |
tree | a6e6e7d29b11b05ea3884e6494a816228ba18b6d /src/rmd_load_cache.c | |
parent | 42904eef310313eeed6f8d91d5306488fd016d2e (diff) |
load_cache: treat invalid frame header as EOF
In preparation for posix_fallocate() pre-allocation of cache
files, expect zeroes for the header when running off the end of
valid data into the only allocated space, and handle gracefully
as an EOF equivalent.
Diffstat (limited to 'src/rmd_load_cache.c')
-rw-r--r-- | src/rmd_load_cache.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rmd_load_cache.c b/src/rmd_load_cache.c index 4ad1741..303cc3b 100644 --- a/src/rmd_load_cache.c +++ b/src/rmd_load_cache.c @@ -153,7 +153,10 @@ static int rmdReadFrame(CachedFrame *frame, CacheFile *icf) static int read_header(FrameHeader *fheader, CacheFile *icf) { - return rmdCacheFileRead(icf, fheader, sizeof(FrameHeader)) == sizeof(FrameHeader); + if (!(rmdCacheFileRead(icf, fheader, sizeof(FrameHeader)) == sizeof(FrameHeader))) + return 0; + + return !strncmp(fheader->frame_prefix, "FRAM", 4); } void *rmdLoadCache(ProgData *pdata) |