Browse Source

Plan 9 from Bell Labs 2005-02-08

David du Colombier 19 years ago
parent
commit
61f87fccb1

+ 13 - 9
dist/replica/_plan9.db

@@ -16,7 +16,7 @@
 386/bin - 20000000775 sys sys 1018897690 0
 386/bin/8a - 775 sys sys 1104121953 114832
 386/bin/8c - 775 sys sys 1107405596 357746
-386/bin/8l - 775 sys sys 1107721554 115721
+386/bin/8l - 775 sys sys 1107756104 115728
 386/bin/9660srv - 775 sys sys 1104121955 103973
 386/bin/aan - 775 sys sys 1104121955 130710
 386/bin/acid - 775 sys sys 1107662683 355831
@@ -53,7 +53,7 @@
 386/bin/auth/debug - 775 sys sys 1104121962 101064
 386/bin/auth/disable - 775 sys sys 1020319057 146
 386/bin/auth/enable - 775 sys sys 1020319057 134
-386/bin/auth/factotum - 775 sys sys 1107706106 312283
+386/bin/auth/factotum - 775 sys sys 1107833921 312267
 386/bin/auth/fgui - 775 sys sys 1106799169 217787
 386/bin/auth/guard.srv - 775 sys sys 1104121964 142850
 386/bin/auth/iam - 775 sys sys 1085076981 50791
@@ -6732,12 +6732,12 @@ sys/src/cmd/8c/sgen.c - 664 sys sys 1089299181 12833
 sys/src/cmd/8c/swt.c - 664 sys sys 1098463321 10943
 sys/src/cmd/8c/txt.c - 664 sys sys 1089299180 24215
 sys/src/cmd/8l - 20000000775 sys sys 1017165863 0
-sys/src/cmd/8l/asm.c - 664 sys sys 1107721553 11897
+sys/src/cmd/8l/asm.c - 664 sys sys 1107755623 11882
 sys/src/cmd/8l/compat.c - 664 sys sys 944960733 445
 sys/src/cmd/8l/l.h - 664 sys sys 1107721553 5803
 sys/src/cmd/8l/list.c - 664 sys sys 1045503947 4185
 sys/src/cmd/8l/mkfile - 664 sys sys 1032102046 363
-sys/src/cmd/8l/obj.c - 664 sys sys 1107721553 26059
+sys/src/cmd/8l/obj.c - 664 sys sys 1107756104 26053
 sys/src/cmd/8l/optab.c - 664 sys sys 1071778472 16231
 sys/src/cmd/8l/pass.c - 664 sys sys 1095107668 13675
 sys/src/cmd/8l/span.c - 664 sys sys 1107721554 23294
@@ -6885,7 +6885,7 @@ sys/src/cmd/auth/factotum/rpc.c - 664 sys sys 1107633794 11167
 sys/src/cmd/auth/factotum/rsa.c - 664 sys sys 1107706104 3416
 sys/src/cmd/auth/factotum/secstore.c - 664 sys sys 1107633794 14935
 sys/src/cmd/auth/factotum/sshrsa.c - 664 sys sys 1107633793 3416
-sys/src/cmd/auth/factotum/util.c - 664 sys sys 1107706104 17877
+sys/src/cmd/auth/factotum/util.c - 664 sys sys 1107833785 17917
 sys/src/cmd/auth/factotum/wep.c - 664 sys sys 1107706104 2140
 sys/src/cmd/auth/guard.srv.c - 664 sys sys 1032497638 2334
 sys/src/cmd/auth/iam.c - 664 sys sys 1015008430 841
@@ -10858,9 +10858,9 @@ sys/src/cmd/upas/filterkit/readaddrs.c - 664 sys sys 1018549521 1381
 sys/src/cmd/upas/filterkit/token.c - 664 sys sys 1018549521 1312
 sys/src/cmd/upas/fs - 20000000775 sys sys 988250018 0
 sys/src/cmd/upas/fs/dat.h - 664 sys sys 1047490337 4267
-sys/src/cmd/upas/fs/fs.c - 664 sys sys 1089299189 27390
+sys/src/cmd/upas/fs/fs.c - 664 sys sys 1107835225 27456
 sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1075069146 16233
-sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1071334860 28493
+sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1107835226 28935
 sys/src/cmd/upas/fs/mkfile - 664 sys sys 1047490336 321
 sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1071334861 7465
 sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1107358653 12930
@@ -12465,5 +12465,9 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
-386/bin/8l - 775 sys sys 1107749127 115721
-386/bin/auth/factotum - 775 sys sys 1107749128 312283
+386/bin/8l - 775 sys sys 1107835553 115728
+rc/bin/dircp - 775 sys sys 1107836261 193
+rc/bin/patch/create - 775 sys sys 1107836219 1380
+rc/bin/patch/email - 775 sys sys 1107836219 401
+sys/man/4/factotum - 664 sys sys 1107836362 14708
+sys/src/cmd/auth/keyfs.c - 664 sys sys 1107835724 17624

+ 12 - 11
dist/replica/plan9.db

@@ -16,7 +16,7 @@
 386/bin - 20000000775 sys sys 1018897690 0
 386/bin/8a - 775 sys sys 1104121953 114832
 386/bin/8c - 775 sys sys 1107405596 357746
-386/bin/8l - 775 sys sys 1107749127 115721
+386/bin/8l - 775 sys sys 1107835553 115728
 386/bin/9660srv - 775 sys sys 1104121955 103973
 386/bin/aan - 775 sys sys 1104121955 130710
 386/bin/acid - 775 sys sys 1107662683 355831
@@ -53,7 +53,7 @@
 386/bin/auth/debug - 775 sys sys 1104121962 101064
 386/bin/auth/disable - 775 sys sys 1020319057 146
 386/bin/auth/enable - 775 sys sys 1020319057 134
-386/bin/auth/factotum - 775 sys sys 1107749128 312283
+386/bin/auth/factotum - 775 sys sys 1107833921 312267
 386/bin/auth/fgui - 775 sys sys 1106799169 217787
 386/bin/auth/guard.srv - 775 sys sys 1104121964 142850
 386/bin/auth/iam - 775 sys sys 1085076981 50791
@@ -3007,7 +3007,7 @@ rc/bin/bundle - 775 sys sys 945617206 173
 rc/bin/c: - 775 sys sys 1015089511 86
 rc/bin/cpurc - 775 sys sys 1048777186 1338
 rc/bin/dial - 20000000775 sys sys 1059180057 0
-rc/bin/dircp - 775 sys sys 1077038698 192
+rc/bin/dircp - 775 sys sys 1107836261 193
 rc/bin/doc2ps - 775 sys sys 1069793831 244
 rc/bin/doc2txt - 775 sys sys 1025197880 563
 rc/bin/doctype - 775 sys sys 945617206 1726
@@ -3041,8 +3041,9 @@ rc/bin/nroff - 775 sys sys 945617208 27
 rc/bin/patch - 20000000775 sys sys 1067803227 0
 rc/bin/patch/applied - 775 sys sys 1081204295 110
 rc/bin/patch/apply - 775 sys sys 1089299188 1276
-rc/bin/patch/create - 775 sys sys 1104988374 1160
+rc/bin/patch/create - 775 sys sys 1107836219 1380
 rc/bin/patch/diff - 775 sys sys 1106151131 466
+rc/bin/patch/email - 775 sys sys 1107836219 401
 rc/bin/patch/list - 775 sys sys 1081204287 644
 rc/bin/patch/move - 775 sys sys 1104430337 565
 rc/bin/patch/note - 664 sys sys 1089299189 655
@@ -5001,7 +5002,7 @@ sys/man/4/dossrv - 664 sys sys 1015024813 4176
 sys/man/4/execnet - 664 sys sys 1019866708 1069
 sys/man/4/exportfs - 664 sys sys 1105574692 4692
 sys/man/4/ext2srv - 664 sys sys 1055692986 2409
-sys/man/4/factotum - 664 sys sys 1107633798 14773
+sys/man/4/factotum - 664 sys sys 1107836362 14708
 sys/man/4/fossil - 664 sys sys 1101668322 9564
 sys/man/4/fs - 664 sys sys 1019058716 3387
 sys/man/4/ftpfs - 664 sys sys 1048285446 4327
@@ -6732,12 +6733,12 @@ sys/src/cmd/8c/sgen.c - 664 sys sys 1089299181 12833
 sys/src/cmd/8c/swt.c - 664 sys sys 1098463321 10943
 sys/src/cmd/8c/txt.c - 664 sys sys 1089299180 24215
 sys/src/cmd/8l - 20000000775 sys sys 1017165863 0
-sys/src/cmd/8l/asm.c - 664 sys sys 1107721553 11897
+sys/src/cmd/8l/asm.c - 664 sys sys 1107755623 11882
 sys/src/cmd/8l/compat.c - 664 sys sys 944960733 445
 sys/src/cmd/8l/l.h - 664 sys sys 1107721553 5803
 sys/src/cmd/8l/list.c - 664 sys sys 1045503947 4185
 sys/src/cmd/8l/mkfile - 664 sys sys 1032102046 363
-sys/src/cmd/8l/obj.c - 664 sys sys 1107721553 26059
+sys/src/cmd/8l/obj.c - 664 sys sys 1107756104 26053
 sys/src/cmd/8l/optab.c - 664 sys sys 1071778472 16231
 sys/src/cmd/8l/pass.c - 664 sys sys 1095107668 13675
 sys/src/cmd/8l/span.c - 664 sys sys 1107721554 23294
@@ -6885,11 +6886,11 @@ sys/src/cmd/auth/factotum/rpc.c - 664 sys sys 1107633794 11167
 sys/src/cmd/auth/factotum/rsa.c - 664 sys sys 1107706104 3416
 sys/src/cmd/auth/factotum/secstore.c - 664 sys sys 1107633794 14935
 sys/src/cmd/auth/factotum/sshrsa.c - 664 sys sys 1107633793 3416
-sys/src/cmd/auth/factotum/util.c - 664 sys sys 1107706104 17877
+sys/src/cmd/auth/factotum/util.c - 664 sys sys 1107833785 17917
 sys/src/cmd/auth/factotum/wep.c - 664 sys sys 1107706104 2140
 sys/src/cmd/auth/guard.srv.c - 664 sys sys 1032497638 2334
 sys/src/cmd/auth/iam.c - 664 sys sys 1015008430 841
-sys/src/cmd/auth/keyfs.c - 664 sys sys 1063855447 17524
+sys/src/cmd/auth/keyfs.c - 664 sys sys 1107835724 17624
 sys/src/cmd/auth/lib - 20000000775 sys sys 1015008430 0
 sys/src/cmd/auth/lib/error.c - 664 sys sys 1015008430 301
 sys/src/cmd/auth/lib/fs.c - 664 sys sys 1015008430 228
@@ -10858,9 +10859,9 @@ sys/src/cmd/upas/filterkit/readaddrs.c - 664 sys sys 1018549521 1381
 sys/src/cmd/upas/filterkit/token.c - 664 sys sys 1018549521 1312
 sys/src/cmd/upas/fs - 20000000775 sys sys 988250018 0
 sys/src/cmd/upas/fs/dat.h - 664 sys sys 1047490337 4267
-sys/src/cmd/upas/fs/fs.c - 664 sys sys 1089299189 27390
+sys/src/cmd/upas/fs/fs.c - 664 sys sys 1107835225 27456
 sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1075069146 16233
-sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1071334860 28493
+sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1107835226 28935
 sys/src/cmd/upas/fs/mkfile - 664 sys sys 1047490336 321
 sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1071334861 7465
 sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1107358653 12930

+ 14 - 0
dist/replica/plan9.log

@@ -13467,3 +13467,17 @@
 1107721884 4 c sys/src/cmd/8l/span.c - 664 sys sys 1107721554 23294
 1107750690 0 c 386/bin/8l - 775 sys sys 1107749127 115721
 1107750690 1 c 386/bin/auth/factotum - 775 sys sys 1107749128 312283
+1107756091 0 c 386/bin/8l - 775 sys sys 1107755624 115729
+1107756091 1 c sys/src/cmd/8l/asm.c - 664 sys sys 1107755623 11882
+1107756091 2 c sys/src/cmd/8l/obj.c - 664 sys sys 1107756104 26053
+1107757892 0 c 386/bin/8l - 775 sys sys 1107756104 115728
+1107835308 0 c 386/bin/auth/factotum - 775 sys sys 1107833921 312267
+1107835308 1 c sys/src/cmd/auth/factotum/util.c - 664 sys sys 1107833785 17917
+1107835308 2 c sys/src/cmd/upas/fs/fs.c - 664 sys sys 1107835225 27456
+1107835308 3 c sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1107835226 28935
+1107837108 0 c 386/bin/8l - 775 sys sys 1107835553 115728
+1107837108 1 c rc/bin/dircp - 775 sys sys 1107836261 193
+1107837108 2 c rc/bin/patch/create - 775 sys sys 1107836219 1380
+1107837108 3 a rc/bin/patch/email - 775 sys sys 1107836219 401
+1107837108 4 c sys/man/4/factotum - 664 sys sys 1107836362 14708
+1107837108 5 c sys/src/cmd/auth/keyfs.c - 664 sys sys 1107835724 17624

+ 1 - 1
rc/bin/dircp

@@ -3,7 +3,7 @@
 switch($#*){
 case 2
 	# explicitly mention /fd/* to work with both plan 9 and ape tar
-	@{cd $1 && tar cf /fd/1 .}|@{cd $2 && tar xf /fd/0}
+	@{cd $1 && tar cf /fd/1 .}|@{cd $2 && tar xTf /fd/0}
 case *
 	echo usage: dircp from to >[1=2]
 }

+ 5 - 0
rc/bin/patch/create

@@ -68,4 +68,9 @@ if(! test -s $d/readme){
 	exit oops
 }
 
+
+echo >[1=2] please run patch/email $1 your-email-address
+echo >[1=2] so that 9trouble can mail you if there are questions.  thanks.
+echo >[1=2] the email address will not be readable by other sources users.
+echo >[1=2]
 echo $d

+ 26 - 0
rc/bin/patch/email

@@ -0,0 +1,26 @@
+#!/bin/rc
+
+if(! ~ $#* 2){
+	echo 'usage: patch/email name email-address' >[1=2]
+	exit usage
+}
+
+if(! test -d /n/sources/patch){
+	rfork n
+	9fs sources
+}
+
+if(! test -d /n/sources/patch/$1){
+	echo 'no such patch' /n/sources/patch/$1 >[1=2]
+	exit nopatch
+}
+
+cd /n/sources/patch/$1 || exit nopatch
+if(! patch/okay .){
+	echo 'bad patch: '$status >[1=2]
+	exit badpatch
+}
+
+>email
+chmod 660 email
+echo $2 >email

+ 9 - 11
sys/man/4/factotum

@@ -256,14 +256,6 @@ to be used.  Here is an example:
 .EX
     proto=p9sk1 dom=avayalabs.com user=presotto !password=lucent
 .EE
-If
-.I factotum
-discovers, during an authentication, that the auth server does not
-have the same password for the key,
-.I factotum
-will add the attribute
-.B authsrv-mismatch=yes
-to the key.
 .PP
 .BR Apop ,
 .BR cram ,
@@ -368,6 +360,15 @@ for authenticating inbound calls
 for authenticating processes whose
 user id does not match
 .IR factotum 's.
+.PP
+If a key has a
+.B disabled
+attribute (with any value), the key is not used
+during any protocols.  Factotum automatically marks
+keys with
+.B disabled=by.factotum
+when they fail during certain authentication
+protocols (in particular, the Plan 9 ones).
 .PD
 .PP
 Whenever
@@ -436,9 +437,6 @@ The mesages are:
 .B "key \fIattribute-value-list\fP
 add a new key.  This will replace any old key whose
 public, i.e. non ! attributes, match.
-If the offset of the write is zero, the key is added at the beginning of
-.IR factotum 's
-list; otherwise, it is added to the end.
 .TP
 .B "delkey \fIattribute-value-list\fP
 delete a key whose attributes match those given.

+ 5 - 5
sys/src/cmd/8l/asm.c

@@ -362,16 +362,16 @@ asmb(void)
 		lputl(textsize);		/* file size */
 		lputl(textsize);		/* memory size */
 		lputl(0x05L);			/* protections = RX */
-		lputl(0x10000L);		/* alignment code?? */
+		lputl(INITRND);			/* alignment */
 
 		lputl(1L);			/* data - type = PT_LOAD */
 		lputl(HEADR+textsize);		/* file offset */
 		lputl(INITDAT);			/* vaddr */
 		lputl(PADDR(INITDAT));		/* paddr */
 		lputl(datsize);			/* file size */
-		lputl(datsize);			/* memory size */
-		lputl(0x07L);			/* protections = RWX */
-		lputl(0x10000L);		/* alignment code?? */
+		lputl(datsize+bsssize);		/* memory size */
+		lputl(0x06L);			/* protections = RW */
+		lputl(INITRND);			/* alignment */
 
 		lputl(0L);			/* data - type = PT_NULL */
 		lputl(HEADR+textsize+datsize);	/* file offset */
@@ -380,7 +380,7 @@ asmb(void)
 		lputl(symsize);			/* symbol table size */
 		lputl(lcsize);			/* line number size */
 		lputl(0x04L);			/* protections = R */
-		lputl(0x04L);			/* alignment code?? */
+		lputl(0x04L);			/* alignment */
 		break;
 	}
 	cflush();

+ 1 - 1
sys/src/cmd/8l/obj.c

@@ -176,7 +176,7 @@ main(int argc, char *argv[])
 	case 5:	/* elf executable */
 		HEADR = rnd(52L+3*32L, 16);
 		if(INITTEXT == -1)
-			INITTEXT = 0x80100000L+HEADR;
+			INITTEXT = 0x80100020L;
 		if(INITDAT == -1)
 			INITDAT = 0;
 		if(INITRND == -1)

+ 4 - 1
sys/src/cmd/auth/factotum/util.c

@@ -304,7 +304,10 @@ mkkeyinfo(Keyinfo *k, Fsstate *fss, Attr *attr)
 	memset(k, 0, sizeof *k);
 	k->fss = fss;
 	k->user = fss->sysuser;
-	k->attr = attr;
+	if(attr)
+		k->attr = attr;
+	else
+		k->attr = fss->attr;
 	return k;
 }
 

+ 18 - 12
sys/src/cmd/auth/keyfs.c

@@ -31,7 +31,6 @@ enum{
 enum{
 	Sok,
 	Sdisabled,
-	Stempdisabled,
 	Smax,
 };
 
@@ -149,6 +148,13 @@ main(int argc, char *argv[])
 	if(pipe(p) < 0)
 		error("can't make pipe: %r");
 
+	if(usepass) {
+		getpass(authkey, nil, 0, 0);
+	} else {
+		if(!getauthkey(authkey))
+			print("keyfs: warning: can't read /dev/key\n");
+	}
+
 	switch(rfork(RFPROC|RFNAMEG|RFNOTEG|RFNOWAIT|RFENVG|RFFDG)){
 	case 0:
 		close(p[0]);
@@ -252,6 +258,11 @@ Walk(Fid *f)
 				break;
 
 			case Quser:
+				if(strcmp(name, "..") == 0) {
+					qtype = Qroot;
+					user = 0;
+					goto Accept;
+				}
 				max = Qmax;
 				for(j = Quser + 1; j < Qmax; j++)
 					if(strcmp(name, qinfo[j]) == 0){
@@ -298,8 +309,10 @@ char *
 Clunk(Fid *f)
 {
 	f->busy = 0;
-	if(f->user && --f->user->ref == 0 && f->user->removed)
+	if(f->user && --f->user->ref == 0 && f->user->removed) {
+		free(f->user->name);
 		free(f->user);
+	}
 	f->user = 0;
 	return 0;
 }
@@ -559,8 +572,10 @@ Remove(Fid *f)
 		f->user->warnings = 0;
 	else if(f->qtype == Quser)
 		removeuser(f->user);
-	else
+	else {
+		Clunk(f);
 		return "permission denied";
+	}
 	Clunk(f);
 	writeusers();
 	return 0;
@@ -766,15 +781,6 @@ readusers(void)
 	User *u;
 	Dir *d;
 
-	if(usepass) {
-		if(*authkey == 0)
-			getpass(authkey, nil, 0, 0);
-	} else {
-		if(!getauthkey(authkey))
-			print("keyfs: warning: can't read /dev/key\n");
-	}
-
-
 	/* read file into an array */
 	fd = open(userkeys, OREAD);
 	if(fd < 0)

+ 2 - 0
sys/src/cmd/upas/fs/fs.c

@@ -1363,6 +1363,8 @@ struct Charset {
 	{ "iso-8859-2",		10,	2, "8859-2", },
 	{ "big5",		4,	2, "big5", },
 	{ "iso-2022-jp",	11, 2, "jis", },
+	{ "windows-1251",	12,	2, "cp1251"},
+	{ "koi8-r",		6,	2, "koi8"},
 };
 
 int

+ 18 - 0
sys/src/cmd/upas/fs/mbox.c

@@ -1132,6 +1132,24 @@ convert(Message *m)
 			m->bend = x + len;
 			m->ballocd = 1;
 		}
+	} else if(cistrcmp(s_to_c(m->charset), "windows-1251") == 0){
+		len = xtoutf("cp1251", &x, m->body, m->bend);
+		if(len != 0){
+			if(m->ballocd)
+				free(m->body);
+			m->body = x;
+			m->bend = x + len;
+			m->ballocd = 1;
+		}
+	} else if(cistrcmp(s_to_c(m->charset), "koi8-r") == 0){
+		len = xtoutf("koi8", &x, m->body, m->bend);
+		if(len != 0){
+			if(m->ballocd)
+				free(m->body);
+			m->body = x;
+			m->bend = x + len;
+			m->ballocd = 1;
+		}
 	}
 
 	m->converted = 1;