stupid pointer conversions
diff --git a/src/cmd/auth/factotum/fs.c b/src/cmd/auth/factotum/fs.c
index 5e3a64e..68e8628 100644
--- a/src/cmd/auth/factotum/fs.c
+++ b/src/cmd/auth/factotum/fs.c
@@ -349,18 +349,18 @@
 		logread(r);
 		break;
 	case Qctl:
-		r->fid->aux = (void*)readlist((int)r->fid->aux, keylist, r);
+		r->fid->aux = (void*)(uintptr)readlist((uintptr)r->fid->aux, keylist, r);
 		respond(r, nil);
 		break;
 	case Qneedkey:
 		needkeyread(r);
 		break;
 	case Qprotolist:
-		r->fid->aux = (void*)readlist((int)r->fid->aux, protolist, r);
+		r->fid->aux = (void*)(uintptr)readlist((uintptr)r->fid->aux, protolist, r);
 		respond(r, nil);
 		break;
 	case Qconv:
-		r->fid->aux = (void*)readlist((int)r->fid->aux, convlist, r);
+		r->fid->aux = (void*)(uintptr)readlist((uintptr)r->fid->aux, convlist, r);
 		respond(r, nil);
 		break;
 	}
diff --git a/src/cmd/auth/factotum/rpc.c b/src/cmd/auth/factotum/rpc.c
index 400b7de..350a079 100644
--- a/src/cmd/auth/factotum/rpc.c
+++ b/src/cmd/auth/factotum/rpc.c
@@ -108,24 +108,24 @@
 	}
 	c->attr = a;
 	proto = strfindattr(a, "proto");
-	role = strfindattr(a, "role");
-
 	if(proto == nil){
 		werrstr("no proto in attrs");
 		goto out;
 	}
-	if(role == nil){
-		werrstr("no role in attrs");
-		goto out;
-	}
 
 	p = protolookup(proto);
 	if(p == nil){
 		werrstr("unknown proto %s", proto);
 		goto out;
 	}
-
 	c->proto = p;
+
+	role = strfindattr(a, "role");
+	if(role == nil){
+		werrstr("no role in attrs");
+		goto out;
+	}
+
 	for(r=p->roles; r->name; r++){
 		if(strcmp(r->name, role) != 0)
 			continue;