upas/fs: fix precedence bugs, compare digest pointer to nil

This commit is contained in:
cinap_lenrek 2017-12-19 20:44:15 +01:00
parent 417bdbb869
commit a84a5c21ce
4 changed files with 17 additions and 18 deletions

View file

@ -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;

View file

@ -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){
/*

View file

@ -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;

View file

@ -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;
}