shithub: riscv

Download patch

ref: a84a5c21ce23abfa3ab579f51d3152dcfc1ee1b3
parent: 417bdbb869597e171fd27384875c8fa6306e2311
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Dec 19 15:44:15 EST 2017

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

--- a/sys/src/cmd/upas/fs/cache.c
+++ b/sys/src/cmd/upas/fs/cache.c
@@ -319,7 +319,7 @@
 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 @@
 		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 @@
 		msgdecref(mb, m);
 		return -1;
 	}
-	if(m->digest == 0)
+	if(m->digest == nil)
 		sysfatal("digest?");
 	countparts(m);
 	return 0;
--- a/sys/src/cmd/upas/fs/idx.c
+++ b/sys/src/cmd/upas/fs/idx.c
@@ -206,13 +206,13 @@
 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 @@
 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 @@
 	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 @@
 			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){
 			/*
--- a/sys/src/cmd/upas/fs/mtree.c
+++ b/sys/src/cmd/upas/fs/mtree.c
@@ -18,7 +18,7 @@
 	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;
--- a/sys/src/cmd/upas/fs/plan9.c
+++ b/sys/src/cmd/upas/fs/plan9.c
@@ -127,7 +127,7 @@
 	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;
 }