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