diff options
author | rsc <devnull@localhost> | 2007-04-21 19:40:55 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2007-04-21 19:40:55 +0000 |
commit | 27d28098203579f0735ba6400641e9be94eb12f8 (patch) | |
tree | 9e0f390ced0de8c582ef3226c420daa18d16ac24 /src/cmd/venti/srv/conv.c | |
parent | 33433b3fde56d9b3ac6de6ee2584416b82bc856f (diff) | |
download | plan9port-27d28098203579f0735ba6400641e9be94eb12f8.tar.gz plan9port-27d28098203579f0735ba6400641e9be94eb12f8.tar.bz2 plan9port-27d28098203579f0735ba6400641e9be94eb12f8.zip |
sync with mit plan 9 version
Diffstat (limited to 'src/cmd/venti/srv/conv.c')
-rw-r--r-- | src/cmd/venti/srv/conv.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/cmd/venti/srv/conv.c b/src/cmd/venti/srv/conv.c index 58b3d25c..6c8d9efb 100644 --- a/src/cmd/venti/srv/conv.c +++ b/src/cmd/venti/srv/conv.c @@ -34,7 +34,7 @@ fmtmagic(char *s, u32int m) for(i=0; i<nelem(magics); i++) if(magics[i].m == m) return magics[i].s; - sprint(s, "0x%08ux", m); + sprint(s, "%#08ux", m); return s; } @@ -61,7 +61,7 @@ unpackarenapart(ArenaPart *ap, u8int *buf) m = U32GET(p); if(m != ArenaPartMagic){ - seterr(ECorrupt, "arena set has wrong magic number: %s expected ArenaPartMagic (%lux)", fmtmagic(fbuf, m), ArenaPartMagic); + seterr(ECorrupt, "arena set has wrong magic number: %s expected ArenaPartMagic (%#lux)", fmtmagic(fbuf, m), ArenaPartMagic); return -1; } p += U32Size; @@ -112,7 +112,7 @@ unpackarena(Arena *arena, u8int *buf) m = U32GET(p); if(m != ArenaMagic){ - seterr(ECorrupt, "arena has wrong magic number: %s expected ArenaMagic (%lux)", fmtmagic(fbuf, m), ArenaMagic); + seterr(ECorrupt, "arena has wrong magic number: %s expected ArenaMagic (%#lux)", fmtmagic(fbuf, m), ArenaMagic); return -1; } p += U32Size; @@ -276,10 +276,15 @@ unpackarenahead(ArenaHead *head, u8int *buf) u8int *p; u32int m; int sz; + char fbuf[20]; p = buf; m = U32GET(p); + if(m != ArenaHeadMagic){ + seterr(ECorrupt, "arena has wrong magic number: %s expected ArenaHeadMagic (%#lux)", fmtmagic(fbuf, m), ArenaHeadMagic); + return -1; + } /* XXX check magic! */ p += U32Size; @@ -497,7 +502,7 @@ unpackisect(ISect *is, u8int *buf) m = U32GET(p); if(m != ISectMagic){ - seterr(ECorrupt, "index section has wrong magic number: %s expected ISectMagic (%lux)", + seterr(ECorrupt, "index section has wrong magic number: %s expected ISectMagic (%#lux)", fmtmagic(fbuf, m), ISectMagic); return -1; } @@ -665,7 +670,7 @@ unpackbloomhead(Bloom *b, u8int *buf) m = U32GET(p); if(m != BloomMagic){ - seterr(ECorrupt, "bloom filter has wrong magic number: %s expected BloomMagic (%lux)", fmtmagic(fbuf, m), (ulong)BloomMagic); + seterr(ECorrupt, "bloom filter has wrong magic number: %s expected BloomMagic (%#lux)", fmtmagic(fbuf, m), (ulong)BloomMagic); return -1; } p += U32Size; @@ -682,6 +687,10 @@ unpackbloomhead(Bloom *b, u8int *buf) b->size = U32GET(p); p += U32Size; + if(b->size < BloomHeadSize || b->size > MaxBloomSize || (b->size&(b->size-1))){ + seterr(ECorrupt, "bloom filter has invalid size %#lux", b->size); + return -1; + } if(buf + BloomHeadSize != p) sysfatal("unpackarena unpacked wrong amount"); |