upas/fs: fix precedence bugs, compare digest pointer to nil
This commit is contained in:
parent
417bdbb869
commit
a84a5c21ce
4 changed files with 17 additions and 18 deletions
|
@ -319,7 +319,7 @@ found:
|
|||
void
|
||||
digestmessage(Mailbox *mb, Message *m)
|
||||
{
|
||||
assert(m->digest == 0);
|
||||
assert(m->digest == nil);
|
||||
m->digest = emalloc(SHA1dlen);
|
||||
sha1((uchar*)m->start, m->end - m->start, m->digest, nil);
|
||||
if(mtreeisdup(mb, m)){
|
||||
|
@ -351,7 +351,7 @@ cachebody(Mailbox *mb, Message *m)
|
|||
m->size -= m->badchars; /* sneaky */
|
||||
m->ibadchars = m->badchars;
|
||||
}
|
||||
if(m->digest == 0)
|
||||
if(m->digest == nil)
|
||||
digestmessage(mb, m);
|
||||
if(m->lines == 0)
|
||||
m->lines = countlines(m);
|
||||
|
@ -396,7 +396,7 @@ insurecache(Mailbox *mb, Message *m)
|
|||
msgdecref(mb, m);
|
||||
return -1;
|
||||
}
|
||||
if(m->digest == 0)
|
||||
if(m->digest == nil)
|
||||
sysfatal("digest?");
|
||||
countparts(m);
|
||||
return 0;
|
||||
|
|
|
@ -206,13 +206,13 @@ static int
|
|||
validmessage(Mailbox *mb, Message *m, int level)
|
||||
{
|
||||
if(level){
|
||||
if(m->digest != 0)
|
||||
if(m->digest != nil)
|
||||
goto lose;
|
||||
if(m->fileid <= 1000000ull<<8)
|
||||
if(m->fileid != 0)
|
||||
goto lose;
|
||||
}else{
|
||||
if(m->digest == 0)
|
||||
if(m->digest == nil)
|
||||
goto lose;
|
||||
if(m->size == 0)
|
||||
goto lose;
|
||||
|
@ -280,18 +280,17 @@ nibble(int c)
|
|||
static uchar*
|
||||
hackdigest(char *s)
|
||||
{
|
||||
uchar t[SHA1dlen];
|
||||
int i;
|
||||
|
||||
if(strcmp(s, "-") == 0)
|
||||
return 0;
|
||||
return nil;
|
||||
if(strlen(s) != 2*SHA1dlen){
|
||||
eprint("bad digest %s\n", s);
|
||||
return 0;
|
||||
return nil;
|
||||
}
|
||||
for(i = 0; i < SHA1dlen; i++)
|
||||
t[i] = nibble(s[2*i])<<4 | nibble(s[2*i + 1]);
|
||||
memmove(s, t, SHA1dlen);
|
||||
((uchar*)s)[i] = nibble(s[2*i])<<4 | nibble(s[2*i + 1]);
|
||||
s[i] = 0;
|
||||
return (uchar*)s;
|
||||
}
|
||||
|
||||
|
@ -342,8 +341,8 @@ rdidx(Biobuf *b, Mailbox *mb, Message *parent, int npart, int level)
|
|||
ll = &parent->part;
|
||||
nparts = npart;
|
||||
for(; npart != 0 && (s = Brdstr(b, '\n', 1)); npart--){
|
||||
m = 0;
|
||||
digest = 0;
|
||||
m = nil;
|
||||
digest = nil;
|
||||
n = tokenize(s, f, nelem(f));
|
||||
if(n != Idxfields){
|
||||
dead:
|
||||
|
@ -357,11 +356,11 @@ dead:
|
|||
continue;
|
||||
}
|
||||
digest = hackdigest(f[0]);
|
||||
if(digest == 0 ^ level != 0)
|
||||
goto dead;
|
||||
if(level == 0)
|
||||
if(level == 0){
|
||||
if(digest == nil)
|
||||
goto dead;
|
||||
m = mtreefind(mb, digest);
|
||||
else
|
||||
} else
|
||||
m = findmessage(mb, parent, nparts - npart);
|
||||
if(m){
|
||||
/*
|
||||
|
|
|
@ -18,7 +18,7 @@ mtreeisdup(Mailbox *mb, Message *m)
|
|||
Mtree t;
|
||||
|
||||
assert(Topmsg(mb, m) && m->digest);
|
||||
if(!m->digest)
|
||||
if(m->digest == nil)
|
||||
return 0;
|
||||
memset(&t, 0, sizeof t);
|
||||
t.m = m;
|
||||
|
|
|
@ -127,7 +127,7 @@ okmsg(Mailbox *mb, Message *m, Inbuf *b)
|
|||
if(m->size > Maxmsg)
|
||||
return -1;
|
||||
m->bend = m->rbend = m->end;
|
||||
if(m->digest == 0)
|
||||
if(m->digest == nil)
|
||||
digestmessage(mb, m);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue