From c4fdc6bfdb2211e13643d5fba75edf437c122eef Mon Sep 17 00:00:00 2001 From: glenda Date: Tue, 25 Aug 2015 09:35:10 +0000 Subject: [PATCH] fix fuckup --- lib/namespace.httpd | 41 ++++++-- lib/vgadb | 11 --- rc/bin/9fs | 6 -- rc/bin/E | 16 ---- rc/bin/ape/egrep | 2 +- rc/bin/ape/fgrep | 2 +- rc/bin/ape/ln | 2 +- rc/bin/cpurc | 9 +- rc/bin/service/tcp17010 | 5 +- rc/bin/sysupdate | 2 +- sys/include/libsec.h | 20 +--- sys/lib/python/mercurial/store.py | 2 +- sys/lib/python/mercurial/util.py | 2 +- sys/src/9/boot/boot.h | 2 +- sys/src/9/boot/bootfs.proto | 3 - sys/src/9/boot/bootrc | 2 +- sys/src/9/boot/net.rc | 10 +- sys/src/9/pc/etheriwl.c | 5 +- sys/src/9/port/chan.c | 4 +- sys/src/9/port/devssl.c | 2 +- sys/src/9/port/devtls.c | 2 +- sys/src/9/port/proc.c | 3 - sys/src/9/port/syscallfmt.c | 2 +- sys/src/cmd/auth/lib/okpasswd.c | 1 + sys/src/cmd/aux/consolefs.c | 154 +++++++++++++++--------------- sys/src/cmd/cpu.c | 2 +- sys/src/cmd/gs/amd64.h | 4 +- sys/src/cmd/ip/httpd/sendfd.c | 6 +- sys/src/cmd/ip/tftpd.c | 3 +- sys/src/cmd/mk/run.c | 2 +- sys/src/libc/fmt/snprint.c | 1 + sys/src/libcontrol/control.c | 5 +- sys/src/libdraw/newwindow.c | 1 + sys/src/libmach/vdb.c | 5 +- sys/src/libsec/port/const.c | 18 ---- sys/src/libsec/port/ecc.c | 125 +----------------------- sys/src/libsec/port/mkfile | 1 - sys/src/libsec/port/thumb.c | 2 +- sys/src/libsec/port/tlshand.c | 86 ++++++++++++----- sys/src/libsec/port/x509.c | 2 +- sys/src/libthread/id.c | 2 +- sys/src/libthread/main.c | 2 +- 42 files changed, 218 insertions(+), 359 deletions(-) delete mode 100755 rc/bin/E delete mode 100644 sys/src/libsec/port/const.c diff --git a/lib/namespace.httpd b/lib/namespace.httpd index dcde8ed7e..74d4faaeb 100644 --- a/lib/namespace.httpd +++ b/lib/namespace.httpd @@ -1,10 +1,39 @@ -bind /cfg /usr/web/cfg -bind /386 /usr/web/386 -bind /amd64 /usr/web/amd64 +# we start with the namespace of the console... -bind /sys/src/9 /usr/web/sys/src/9 +# man2html expects man pages under /sys/man +mount #s/boot /n/emelieother other +bind /n/emelieother/plan9/sys/man /usr/web/sys/man +#bind /n/emelieother/plan9/sys/doc /usr/web/sys/doc +#bind /sys/man /usr/web/sys/man +bind /sys/doc /usr/web/sys/doc -mount #s/etcd /n/etcd -bind /n/etcd/www /usr/web/etc +# just so people will find something under plan9 +bind /usr/web/plan9dist /usr/web/plan9 + +# users +bind /usr/mike/www /usr/web/incoming/mike + +# netlib +bind /netlib/pub /usr/web/netlib +mount -b #s/netlib.depend.pub /usr/web/netlib.depend +# don't need to bind to /usr/web/math etc. because of /sys/lib/http-rewrite + +# who what why when where +mount /srv/alice /n/alice +bind -b /n/alice/cm /usr/web/cm +bind /usr/web/cm/who /usr/web/who +bind -b /usr/web/cm/physics/who /usr/web/who +bind -b /usr/web/cm/blrsv/who /usr/web/who +bind -b /usr/web/cm/ss/who /usr/web/who +bind -b /usr/web/cm/ms/who /usr/web/who +bind -b /usr/web/cm/china/who /usr/web/who +bind -b /usr/web/cm/cs/who /usr/web/who +bind /usr/web/cm/ms/what/wavelet /usr/web/wavelet + +# formerly ftp.research.bell-labs.com +bind -b /n/alice/usr/ftp /usr/web/dist + +# wiki (questions to rsc) +mount -b #s/wiki.plan9 /usr/web/wiki/plan9 # httpd will bind /usr/web onto / diff --git a/lib/vgadb b/lib/vgadb index 5b9e8323a..5d03140c9 100644 --- a/lib/vgadb +++ b/lib/vgadb @@ -435,7 +435,6 @@ ctlr ctlr=geode linear=1 ctlr - vid=0x8086 did=0x0126 # Intel 2nd Gen Core vid=0x8086 did=0x0166 # Intel 3rd Gen Core vid=0x8086 did=0x2a42 # Intel 4 Series Mobile link=vga @@ -1695,16 +1694,6 @@ s2231wD=1680x1050 vrs=1053 vre=1059 vt=1080 hsync=+ vsync=- -# -# Lenovo T420 (LCD) LVDS -# -#t420=1366x768 # 60Hz -# clock=69.3 -# shb=1398 ehb=1430 ht=1470 -# vrs=771 vre=776 vt=786 -# hsync=- vsync=- -# lcd=1 - # # Lenovo X230 (LCD) LVDS # diff --git a/rc/bin/9fs b/rc/bin/9fs index 1a06cab85..578120680 100755 --- a/rc/bin/9fs +++ b/rc/bin/9fs @@ -71,12 +71,6 @@ case *.vac vacfs -m /n/`{basename $1 .vac} `{cat $score} case wiki srv -m 'net!plan9.bell-labs.com!wiki' wiki /mnt/wiki -case ingenic - ftpfs -qKm /n/ingenic -a $user@$sysname ftp.ingenic.com -case kernel - ftpfs -qKm /n/kernel -a $user@sysname ftp.kernel.org -case qrstuv - srv -nqmC tcp!fs.9paste.net qrstuv case * switch($#*){ case 1 diff --git a/rc/bin/E b/rc/bin/E deleted file mode 100755 index e91d4f6a2..000000000 --- a/rc/bin/E +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/rc -# E file - B file, wait until it changes, exit -rfork e -if (! ~ $#* 1) { - echo usage: $0 file >[1=2] - exit usage -} -if (! test -e $1) { - echo $0: $1: no such file >[1=2] - exit no-file -} -otm = `{mtime $1 | awk '{print $1}'} -B $1 -while (~ $otm `{mtime $1 | awk '{print $1}'}) - sleep 1 -exit '' diff --git a/rc/bin/ape/egrep b/rc/bin/ape/egrep index 4a445c35e..ffd1b2dc3 100755 --- a/rc/bin/ape/egrep +++ b/rc/bin/ape/egrep @@ -1,2 +1,2 @@ #!/bin/rc -exec /$objtype/bin/ape/grep -E $* +exec /rc/bin/ape/grep $* diff --git a/rc/bin/ape/fgrep b/rc/bin/ape/fgrep index 99853d168..ffd1b2dc3 100755 --- a/rc/bin/ape/fgrep +++ b/rc/bin/ape/fgrep @@ -1,2 +1,2 @@ #!/bin/rc -exec /$objtype/bin/ape/grep -F $* +exec /rc/bin/ape/grep $* diff --git a/rc/bin/ape/ln b/rc/bin/ape/ln index d48d0326a..bb5da4a44 100755 --- a/rc/bin/ape/ln +++ b/rc/bin/ape/ln @@ -20,4 +20,4 @@ if(~ $force n && test -e $2){ exit 'usage' } -exec cp -R $1 $2 +exec cp -gux $1 $2 diff --git a/rc/bin/cpurc b/rc/bin/cpurc index af3adc10c..d20cf07e1 100755 --- a/rc/bin/cpurc +++ b/rc/bin/cpurc @@ -55,22 +55,18 @@ if(test -r /net/ipselftab){ } } -if(! test -e /net/dns){ - echo dns... +if(! test -e /net/dns) ndb/dns -r -} -echo timesync... if(! ps|grep -s timesync){ if(~ $#ntp 0) . <{ndb/ipquery sys $sysname ntp | sed 's, +,\n,g'} if(~ $#ntp 0) ntp=pool.ntp.org - #aux/timesync -n $ntp + aux/timesync -n $ntp sleep 2 } -echo listen... if(~ $#auth 0){ auth=`{ndb/query sys $sysname auth} . <{ndb/ipquery sys $sysname auth | sed 's, +,\n,g'} @@ -93,7 +89,6 @@ case * if(test -f /dev/apm) aux/apm -echo cpustart... if(test -e /cfg/$sysname/cpustart) . /cfg/$sysname/cpustart diff --git a/rc/bin/service/tcp17010 b/rc/bin/service/tcp17010 index f25b7aa23..8747639f1 100755 --- a/rc/bin/service/tcp17010 +++ b/rc/bin/service/tcp17010 @@ -1,4 +1,3 @@ #!/bin/rc -#netdir=`{echo $3 | sed 's;/[0-9]+$;!*!0;'} -#exec /bin/cpu -A $netdir -R -exec /bin/cpu -R +netdir=`{echo $3 | sed 's;/[0-9]+$;!*!0;'} +exec /bin/cpu -A $netdir -R diff --git a/rc/bin/sysupdate b/rc/bin/sysupdate index de08d28a2..e0420b50f 100755 --- a/rc/bin/sysupdate +++ b/rc/bin/sysupdate @@ -1,6 +1,6 @@ #!/bin/rc rfork en - +source=https://code.9front.org/hg/plan9front cd / if(! test -d .hg) bind -ac /dist/plan9front / diff --git a/sys/include/libsec.h b/sys/include/libsec.h index d8d4852d5..60f25f944 100644 --- a/sys/include/libsec.h +++ b/sys/include/libsec.h @@ -403,16 +403,6 @@ PEMChain*readcertchain(char *filename); int aes_xts_encrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input, uchar *output, ulong len) ; int aes_xts_decrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input, uchar *output, ulong len); -/* - * ECC - */ - -/* ids for ecnamedcurve */ -enum -{ - Secp256r1 = 23, -}; - typedef struct ECpoint{ int inf; mpint *x; @@ -434,15 +424,10 @@ typedef struct ECdomain{ mpint *h; } ECdomain; -ECdomain* ecnamedcurve(int); -void ecfreepoint(ECpoint*); -void ecfreepriv(ECpriv*); -void ecfreedomain(ECdomain*); void ecassign(ECdomain *, ECpoint *old, ECpoint *new); void ecadd(ECdomain *, ECpoint *a, ECpoint *b, ECpoint *s); void ecmul(ECdomain *, ECpoint *a, mpint *k, ECpoint *s); -ECpoint* betoec(ECdomain*, uchar*, int, ECpoint*); -ECpoint* strtoec(ECdomain *, char *, char **, ECpoint*); +ECpoint* strtoec(ECdomain *, char *, char **, ECpoint *); ECpriv* ecgen(ECdomain *, ECpriv*); int ecverify(ECdomain *, ECpoint *); int ecpubverify(ECdomain *, ECpub *); @@ -472,8 +457,5 @@ mpint* dh_new(DHstate *dh, mpint *p, mpint *g); /* calculate shared key: k = pub ^ x % p */ mpint* dh_finish(DHstate *dh, mpint *pub); -/* constant-time comparison similar to memcmp(2) */ -int constcmp(uchar *x, uchar *y, int len); - /* password-based key derivation function 2 (RFC 2898) */ void pbkdf2_hmac_sha1(uchar *p, ulong plen, uchar *s, ulong slen, ulong rounds, uchar *d, ulong dlen); diff --git a/sys/lib/python/mercurial/store.py b/sys/lib/python/mercurial/store.py index 5a4238dd6..eec9dd519 100644 --- a/sys/lib/python/mercurial/store.py +++ b/sys/lib/python/mercurial/store.py @@ -246,7 +246,7 @@ class fncache(object): '''fill the entries from the fncache file''' self.entries = set() try: - fp = self.opener('fncache', mode='r') + fp = self.opener('fncache', mode='rb') except IOError: # skip nonexistent file return diff --git a/sys/lib/python/mercurial/util.py b/sys/lib/python/mercurial/util.py index 777b345dd..02ff43d7f 100644 --- a/sys/lib/python/mercurial/util.py +++ b/sys/lib/python/mercurial/util.py @@ -763,7 +763,7 @@ def mktempcopy(name, emptyok=False, createmode=None): return temp try: try: - ifp = posixfile(name, "r") + ifp = posixfile(name, "rb") except IOError, inst: if inst.errno == errno.ENOENT: return temp diff --git a/sys/src/9/boot/boot.h b/sys/src/9/boot/boot.h index db7130922..c72622807 100644 --- a/sys/src/9/boot/boot.h +++ b/sys/src/9/boot/boot.h @@ -1,5 +1,5 @@ enum { - Debug = 1, + Debug = 0, }; extern void fatal(char*); diff --git a/sys/src/9/boot/bootfs.proto b/sys/src/9/boot/bootfs.proto index a9e973a73..02ca92979 100644 --- a/sys/src/9/boot/bootfs.proto +++ b/sys/src/9/boot/bootfs.proto @@ -30,15 +30,12 @@ $objtype ndb dnsgetip hjfs - p - ps rc rm sed sleep srv test - tlsclient unmount nusb usbd diff --git a/sys/src/9/boot/bootrc b/sys/src/9/boot/bootrc index eb451f2a4..208122f72 100755 --- a/sys/src/9/boot/bootrc +++ b/sys/src/9/boot/bootrc @@ -66,7 +66,7 @@ fn main{ if(~ $#nobootprompt 0){ echo showlocaldevs - ask bootargs ' is (tcp, tcptls, il, local!device)' $"bootargs + ask bootargs ' is (tcp, il, local!device)' $"bootargs } if not bootargs=$nobootprompt nobootprompt=() diff --git a/sys/src/9/boot/net.rc b/sys/src/9/boot/net.rc index a3e673834..fb399ef97 100755 --- a/sys/src/9/boot/net.rc +++ b/sys/src/9/boot/net.rc @@ -48,12 +48,6 @@ fn connecttcp{ fs=$fs(1) } -fn connecttcptls{ - while(! ~ $#fs 0 && ! srv -qe 'tlsclient -t <{echo $fsthumb} tcp!'^$fs(1)^!5564 boot) - fs=$fs(2-); - fs=$fs(1) -} - fn connectil{ while(! ~ $#fs 0 && ! srv -q il!$fs(1)^!17008 boot) fs=$fs(2-); @@ -61,7 +55,5 @@ fn connectil{ } mtcp=(confignet connecttcp) -mtcptls=(confignet connecttcptls) mil=(confignet connectil) -mt=(mtcp mtcptls mil $mt) - +mt=(mtcp mil $mt) diff --git a/sys/src/9/pc/etheriwl.c b/sys/src/9/pc/etheriwl.c index ad22fa879..0077061be 100644 --- a/sys/src/9/pc/etheriwl.c +++ b/sys/src/9/pc/etheriwl.c @@ -2164,10 +2164,8 @@ iwlrecover(void *arg) if(ctlr->power) poweroff(ctlr); - if((csr32r(ctlr, Gpc) & RfKill) == 0){ - print("#l%d: rfkill on, not resetting\n", edev->ctlrno); + if((csr32r(ctlr, Gpc) & RfKill) == 0) break; - } if(reset(ctlr) != nil) break; @@ -2449,7 +2447,6 @@ iwlpci(void) case 0x4238: /* Centrino Ultimate-N 6300 variant 2 */ case 0x08ae: /* Centrino Wireless-N 100 */ case 0x0083: /* Centrino Wireless-N 1000 */ - case 0x0891: /* Centrino Wireless-N 2200 */ case 0x0887: /* Centrino Wireless-N 2230 */ case 0x0888: /* Centrino Wireless-N 2230 */ break; diff --git a/sys/src/9/port/chan.c b/sys/src/9/port/chan.c index add9ece90..7e87b9110 100644 --- a/sys/src/9/port/chan.c +++ b/sys/src/9/port/chan.c @@ -152,10 +152,8 @@ chandevreset(void) int i; todinit(); /* avoid later reentry causing infinite recursion */ - for(i=0; devtab[i] != nil; i++){ - //print("%c: %s: reset\n", devtab[i]->dc, devtab[i]->name); + for(i=0; devtab[i] != nil; i++) devtab[i]->reset(); - } } static void closeproc(void*); diff --git a/sys/src/9/port/devssl.c b/sys/src/9/port/devssl.c index 829dfe2e3..7e9133e8e 100644 --- a/sys/src/9/port/devssl.c +++ b/sys/src/9/port/devssl.c @@ -1439,7 +1439,7 @@ checkdigestb(Dstate *s, Block *bin) *p = n; (*s->hf)(msgid, 4, digest, &ss); - if(constcmp(digest, bin->rp, s->diglen) != 0) + if(memcmp(digest, bin->rp, s->diglen) != 0) error("bad digest"); } diff --git a/sys/src/9/port/devtls.c b/sys/src/9/port/devtls.c index ad6750a36..6b728dba5 100644 --- a/sys/src/9/port/devtls.c +++ b/sys/src/9/port/devtls.c @@ -825,7 +825,7 @@ if(tr->debug) pdump(unpad_len, p, "decrypted:"); (*tr->packMac)(in->sec, in->sec->mackey, seq, header, p, len, hmac); if(unpad_len < in->sec->maclen) rcvError(tr, EBadRecordMac, "short record mac"); - if(constcmp(hmac, p+len, in->sec->maclen) != 0) + if(memcmp(hmac, p+len, in->sec->maclen) != 0) rcvError(tr, EBadRecordMac, "record mac mismatch"); b->rp = p; b->wp = p+len; diff --git a/sys/src/9/port/proc.c b/sys/src/9/port/proc.c index 03eb69da4..eadca93ec 100644 --- a/sys/src/9/port/proc.c +++ b/sys/src/9/port/proc.c @@ -173,9 +173,6 @@ sched(void) up->state = Running; up->mach = MACHP(m->machno); m->proc = up; - //print("poolcheck sched %s\n", p->text); - //#include - //poolcheck(mainmem); mmuswitch(up); gotolabel(&up->sched); } diff --git a/sys/src/9/port/syscallfmt.c b/sys/src/9/port/syscallfmt.c index 26f2fd245..5ae5b31ab 100644 --- a/sys/src/9/port/syscallfmt.c +++ b/sys/src/9/port/syscallfmt.c @@ -114,7 +114,7 @@ syscallfmt(ulong syscallno, uintptr pc, va_list list) a = va_arg(list, char*); fmtuserstring(&fmt, a, ""); argv = va_arg(list, char**); - evenaddr((uintptr)argv); + evenaddr(PTR2UINT(argv)); for(;;){ validaddr((uintptr)argv, sizeof(char**), 0); a = *(char **)argv; diff --git a/sys/src/cmd/auth/lib/okpasswd.c b/sys/src/cmd/auth/lib/okpasswd.c index 5512e559a..b904db5aa 100644 --- a/sys/src/cmd/auth/lib/okpasswd.c +++ b/sys/src/cmd/auth/lib/okpasswd.c @@ -10,6 +10,7 @@ char *trivial[] = { "change me", "passwd", "no passwd", + "anonymous", 0 }; diff --git a/sys/src/cmd/aux/consolefs.c b/sys/src/cmd/aux/consolefs.c index 0d4146bc6..ebc5e1230 100644 --- a/sys/src/cmd/aux/consolefs.c +++ b/sys/src/cmd/aux/consolefs.c @@ -5,7 +5,6 @@ #include #include #include -#include <9p.h> /* * This fs presents a 1 level file system. It contains @@ -13,7 +12,7 @@ */ typedef struct Console Console; -typedef struct Aux Aux; +typedef struct Fid Fid; typedef struct Request Request; typedef struct Reqlist Reqlist; typedef struct Fs Fs; @@ -29,7 +28,7 @@ enum Bufsize= 32*1024, /* chars buffered per reader */ Maxcons= 64, /* maximum consoles */ - Nhash= 64, /* Aux hash buckets */ + Nhash= 64, /* Fid hash buckets */ }; #define TYPE(x) (((ulong)x.path) & 0xf) @@ -39,7 +38,7 @@ enum struct Request { Request *next; - Aux *fid; + Fid *fid; Fs *fs; Fcall f; uchar buf[1]; @@ -52,11 +51,11 @@ struct Reqlist Request *last; }; -struct Aux +struct Fid { Lock; - Aux *next; /* hash list */ - Aux *cnext; /* list of Aux's on a console */ + Fid *next; /* hash list */ + Fid *cnext; /* list of Fid's on a console */ int fid; int ref; @@ -94,7 +93,7 @@ struct Console int cfd; int sfd; - Aux *flist; /* open fids to broadcast to */ + Fid *flist; /* open fids to broadcast to */ }; struct Fs @@ -103,7 +102,7 @@ struct Fs int fd; /* to kernel mount point */ int messagesize; - Aux *hash[Nhash]; + Fid *hash[Nhash]; Console *cons[Maxcons]; int ncons; }; @@ -113,30 +112,30 @@ extern Fs* fsmount(char*); extern void fsreader(void*); extern void fsrun(void*); -extern Aux* fsgetfid(Fs*, int); -extern void fsputfid(Fs*, Aux*); +extern Fid* fsgetfid(Fs*, int); +extern void fsputfid(Fs*, Fid*); extern int fsdirgen(Fs*, Qid, int, Dir*, uchar*, int); extern void fsreply(Fs*, Request*, char*); -extern void fskick(Fs*, Aux*); +extern void fskick(Fs*, Fid*); extern int fsreopen(Fs*, Console*); -extern void fsversion(Fs*, Request*, Aux*); -extern void fsflush(Fs*, Request*, Aux*); -extern void fsauth(Fs*, Request*, Aux*); -extern void fsattach(Fs*, Request*, Aux*); -extern void fswalk(Fs*, Request*, Aux*); -extern void fsclwalk(Fs*, Request*, Aux*); -extern void fsopen(Fs*, Request*, Aux*); -extern void fscreate(Fs*, Request*, Aux*); -extern void fsread(Fs*, Request*, Aux*); -extern void fswrite(Fs*, Request*, Aux*); -extern void fsclunk(Fs*, Request*, Aux*); -extern void fsremove(Fs*, Request*, Aux*); -extern void fsstat(Fs*, Request*, Aux*); -extern void fswstat(Fs*, Request*, Aux*); +extern void fsversion(Fs*, Request*, Fid*); +extern void fsflush(Fs*, Request*, Fid*); +extern void fsauth(Fs*, Request*, Fid*); +extern void fsattach(Fs*, Request*, Fid*); +extern void fswalk(Fs*, Request*, Fid*); +extern void fsclwalk(Fs*, Request*, Fid*); +extern void fsopen(Fs*, Request*, Fid*); +extern void fscreate(Fs*, Request*, Fid*); +extern void fsread(Fs*, Request*, Fid*); +extern void fswrite(Fs*, Request*, Fid*); +extern void fsclunk(Fs*, Request*, Fid*); +extern void fsremove(Fs*, Request*, Fid*); +extern void fsstat(Fs*, Request*, Fid*); +extern void fswstat(Fs*, Request*, Fid*); -void (*fcall[])(Fs*, Request*, Aux*) = +void (*fcall[])(Fs*, Request*, Fid*) = { [Tflush] fsflush, [Tversion] fsversion, @@ -200,7 +199,7 @@ Ndb *db; * any request that can get queued for a delayed reply */ Request* -alloccreq(Fs *fs, int bufsize) +allocreq(Fs *fs, int bufsize) { Request *r; @@ -344,10 +343,10 @@ fsdirgen(Fs *fs, Qid parent, int i, Dir *d, uchar *buf, int nbuf) Fs* fsmount(char *mntpt) { - int pfd[2]; - Fs *fs; - Dir d; + int pfd[2], srv; + char buf[32]; + int n; static void *v[2]; fs = emalloc(sizeof(Fs)); @@ -360,19 +359,21 @@ fsmount(char *mntpt) v[1] = pfd; proccreate(fsrun, v, 16*1024); - if(postfd("consoles", pfd[1]) < 0) - sysfatal("post: %r"); + /* Typically mounted before /srv exists */ + if(access("#s/consoles", AEXIST) < 0){ + srv = create("#s/consoles", OWRITE, 0666); + if(srv < 0) + fatal("post: %r"); - nulldir(&d); - d.mode = 0666; - dirwstat("/srv/consoles", &d); + n = sprint(buf, "%d", pfd[1]); + if(write(srv, buf, n) < 0) + fatal("write srv: %r"); - if(mntpt){ - if(amount(pfd[1], mntpt, MBEFORE, "") == -1) - sysfatal("mount %s: %r", mntpt); - }else - close(pfd[1]); + close(srv); + } + mount(pfd[1], -1, mntpt, MBEFORE, ""); + close(pfd[1]); return fs; } @@ -515,7 +516,7 @@ console(Fs* fs, char *name, char *dev, int speed, int cronly, int ondemand) * the reader may miss data but always sees an in order sequence. */ void -fromconsole(Aux *f, char *p, int n) +fromconsole(Fid *f, char *p, int n) { char *rp, *wp, *ep; int pass; @@ -551,10 +552,10 @@ fromconsole(Aux *f, char *p, int n) * broadcast a list of members to all listeners */ void -bcastmembers(Fs *fs, Console *c, char *msg, Aux *f) +bcastmembers(Fs *fs, Console *c, char *msg, Fid *f) { int n; - Aux *fl; + Fid *fl; char buf[512]; sprint(buf, "[%s%s", msg, f->user); @@ -589,7 +590,7 @@ void fsreader(void *v) { int n; - Aux *fl; + Fid *fl; char buf[1024]; Fs *fs; Console *c; @@ -652,6 +653,8 @@ readdb(Fs *fs) } } +int dbmtime; + /* * a request processor (one per Fs) */ @@ -660,7 +663,8 @@ fsrun(void *v) { int n, t; Request *r; - Aux *f; + Fid *f; + Dir *d; void **a = v; Fs* fs; int *pfd; @@ -668,12 +672,15 @@ fsrun(void *v) fs = a[0]; pfd = a[1]; fs->fd = pfd[0]; - readdb(fs); notify(handler); for(;;){ - if(ndbchanged(db)) + d = dirstat(consoledb); + if(d != nil && d->mtime != dbmtime){ + dbmtime = d->mtime; readdb(fs); - r = alloccreq(fs, messagesize); + } + free(d); + r = allocreq(fs, messagesize); while((n = read9pmsg(fs->fd, r->buf, messagesize)) == 0) ; if(n < 0) @@ -698,10 +705,10 @@ fsrun(void *v) } } -Aux* +Fid* fsgetfid(Fs *fs, int fid) { - Aux *f, *nf; + Fid *f, *nf; lock(fs); for(f = fs->hash[fid%Nhash]; f; f = f->next){ @@ -712,7 +719,7 @@ fsgetfid(Fs *fs, int fid) } } - nf = emalloc(sizeof(Aux)); + nf = emalloc(sizeof(Fid)); nf->next = fs->hash[fid%Nhash]; fs->hash[fid%Nhash] = nf; nf->fid = fid; @@ -724,9 +731,9 @@ fsgetfid(Fs *fs, int fid) } void -fsputfid(Fs *fs, Aux *f) +fsputfid(Fs *fs, Fid *f) { - Aux **l, *nf; + Fid **l, *nf; lock(fs); if(--f->ref > 0){ @@ -744,13 +751,13 @@ fsputfid(Fs *fs, Aux *f) } void -fsauth(Fs *fs, Request *r, Aux*) +fsauth(Fs *fs, Request *r, Fid*) { fsreply(fs, r, "consolefs: authentication not required"); } void -fsversion(Fs *fs, Request *r, Aux*) +fsversion(Fs *fs, Request *r, Fid*) { if(r->f.msize < 256){ @@ -771,7 +778,7 @@ fsversion(Fs *fs, Request *r, Aux*) } void -fsflush(Fs *fs, Request *r, Aux *f) +fsflush(Fs *fs, Request *r, Fid *f) { Request *or; @@ -779,15 +786,12 @@ fsflush(Fs *fs, Request *r, Aux *f) if(or != nil){ fsputfid(fs, or->fid); free(or); - fsreply(fs, r, nil); - } else { - fsputfid(fs, f); - free(r); } + fsreply(fs, r, nil); } void -fsattach(Fs *fs, Request *r, Aux *f) +fsattach(Fs *fs, Request *r, Fid *f) { f->qid.type = QTDIR; f->qid.path = QID(0, Ttopdir); @@ -809,13 +813,13 @@ fsattach(Fs *fs, Request *r, Aux *f) } void -fswalk(Fs *fs, Request *r, Aux *f) +fswalk(Fs *fs, Request *r, Fid *f) { char *name; Dir d; int i, n, nqid, nwname; Qid qid, wqid[MAXWELEM]; - Aux *nf; + Fid *nf; char *err; if(f->attached == 0){ @@ -928,7 +932,7 @@ int m2p[] ={ void bcastmsg(Fs *fs, Console *c, char *msg, int n) { - Aux *fl; + Fid *fl; for(fl = c->flist; fl; fl = fl->cnext){ fromconsole(fl, msg, n); @@ -937,7 +941,7 @@ bcastmsg(Fs *fs, Console *c, char *msg, int n) } void -fsopen(Fs *fs, Request *r, Aux *f) +fsopen(Fs *fs, Request *r, Fid *f) { int mode; Console *c; @@ -1005,13 +1009,13 @@ fsopen(Fs *fs, Request *r, Aux *f) } void -fscreate(Fs *fs, Request *r, Aux*) +fscreate(Fs *fs, Request *r, Fid*) { fsreply(fs, r, Eperm); } void -fsread(Fs *fs, Request *r, Aux *f) +fsread(Fs *fs, Request *r, Fid *f) { uchar *p, *e; int i, m, off; @@ -1074,7 +1078,7 @@ fsread(Fs *fs, Request *r, Aux *f) } void -fswrite(Fs *fs, Request *r, Aux *f) +fswrite(Fs *fs, Request *r, Fid *f) { int i, eol = 0; @@ -1137,9 +1141,9 @@ fswrite(Fs *fs, Request *r, Aux *f) } void -fsclunk(Fs *fs, Request *r, Aux *f) +fsclunk(Fs *fs, Request *r, Fid *f) { - Aux **l, *fl; + Fid **l, *fl; Request *nr; if(f->open && TYPE(f->qid) == Qdata){ @@ -1166,13 +1170,13 @@ fsclunk(Fs *fs, Request *r, Aux *f) } void -fsremove(Fs *fs, Request *r, Aux*) +fsremove(Fs *fs, Request *r, Fid*) { fsreply(fs, r, Eperm); } void -fsstat(Fs *fs, Request *r, Aux *f) +fsstat(Fs *fs, Request *r, Fid *f) { int i, n; Qid q; @@ -1194,7 +1198,7 @@ fsstat(Fs *fs, Request *r, Aux *f) } void -fswstat(Fs *fs, Request *r, Aux*) +fswstat(Fs *fs, Request *r, Fid*) { fsreply(fs, r, Eperm); } @@ -1222,7 +1226,7 @@ fsreply(Fs *fs, Request *r, char *err) * called whenever input or a read request has been received */ void -fskick(Fs *fs, Aux *f) +fskick(Fs *fs, Fid *f) { Request *r; char *p, *rp, *wp, *ep; diff --git a/sys/src/cmd/cpu.c b/sys/src/cmd/cpu.c index edcf8bd50..1994aaf28 100644 --- a/sys/src/cmd/cpu.c +++ b/sys/src/cmd/cpu.c @@ -224,7 +224,7 @@ main(int argc, char **argv) if(system == nil) { p = getenv("cpu"); if(p == 0) - p = "$cpu"; + fatal("set $cpu"); system = p; } diff --git a/sys/src/cmd/gs/amd64.h b/sys/src/cmd/gs/amd64.h index 80ac5906c..ce16fed64 100644 --- a/sys/src/cmd/gs/amd64.h +++ b/sys/src/cmd/gs/amd64.h @@ -33,13 +33,13 @@ /* ---------------- Cache sizes ---------------- */ -#define ARCH_CACHE1_SIZE 2097152 +#define ARCH_CACHE1_SIZE 131072 #define ARCH_CACHE2_SIZE 4194304 /* ---------------- Miscellaneous ---------------- */ #define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 1 +#define ARCH_PTRS_ARE_SIGNED 0 #define ARCH_FLOATS_ARE_IEEE 1 #define ARCH_ARITH_RSHIFT 2 #define ARCH_CAN_SHIFT_FULL_LONG 0 diff --git a/sys/src/cmd/ip/httpd/sendfd.c b/sys/src/cmd/ip/httpd/sendfd.c index c1850ea75..b3ef1c13b 100644 --- a/sys/src/cmd/ip/httpd/sendfd.c +++ b/sys/src/cmd/ip/httpd/sendfd.c @@ -240,10 +240,10 @@ static void printtype(Hio *hout, HContent *type, HContent *enc) { hprint(hout, "Content-Type: %s/%s", type->generic, type->specific); - +/* if(cistrcmp(type->generic, "text") == 0) hprint(hout, ";charset=utf-8"); - +*/ hprint(hout, "\r\n"); if(enc != nil) hprint(hout, "Content-Encoding: %s\r\n", enc->generic); @@ -351,8 +351,6 @@ checkreq(HConnect *c, HContent *type, HContent *enc, long mtime, char *etag) if(c->req.vermaj >= 1 && c->req.vermin >= 1 && !hcheckcontent(enc, c->head.okencode, "Content-Encoding", 0)) return notaccept(c, type, enc, "Content-Encoding"); - return 1; - /* * can use weak match only with get or head; * this always uses strong matches diff --git a/sys/src/cmd/ip/tftpd.c b/sys/src/cmd/ip/tftpd.c index 4b4725f1f..e0569b959 100644 --- a/sys/src/cmd/ip/tftpd.c +++ b/sys/src/cmd/ip/tftpd.c @@ -54,7 +54,6 @@ enum */ Bandtblksz = Bandtmtu - 40 - 8, Bcavium = 1432, /* cavium's u-boot demands this size */ - Bci20 = 1468, /* ci20 u-boot */ }; typedef struct Opt Opt; @@ -330,7 +329,7 @@ options(int fd, char *buf, int bufsz, char *file, ushort oper, char *p, int dlen syslog(dbg, flog, "tftpd %d %s tsize is %,lld", pid, file, size); } else if (oper == Tftp_READ && cistrcmp(p, "blksize") == 0 && - blksize > Bandtblksz && blksize != Bcavium && blksize != Bci20) { + blksize > Bandtblksz && blksize != Bcavium) { *op->valp = blksize = Bandtblksz; olen = emitn(blksize, bp, ep); syslog(dbg, flog, "tftpd %d overriding blksize to %d", diff --git a/sys/src/cmd/mk/run.c b/sys/src/cmd/mk/run.c index ecee9819a..c01b519fd 100644 --- a/sys/src/cmd/mk/run.c +++ b/sys/src/cmd/mk/run.c @@ -163,7 +163,7 @@ again: /* rogue processes */ uarg = 1; } else { jobs = 0; - sysfatal("%s", buf); + Exit(); } } for(w = j->t; w; w = w->next){ diff --git a/sys/src/libc/fmt/snprint.c b/sys/src/libc/fmt/snprint.c index c30bfd271..8a4681392 100644 --- a/sys/src/libc/fmt/snprint.c +++ b/sys/src/libc/fmt/snprint.c @@ -12,3 +12,4 @@ snprint(char *buf, int len, char *fmt, ...) va_end(args); return n; } + diff --git a/sys/src/libcontrol/control.c b/sys/src/libcontrol/control.c index a9335e8f5..f83cea089 100644 --- a/sys/src/libcontrol/control.c +++ b/sys/src/libcontrol/control.c @@ -164,7 +164,7 @@ controlsetthread(void *v) Rune buf[2][20], *rp; cs = v; - threadsetname("controlsetthread %#p", cs); + threadsetname("controlsetthread 0x%p", cs); alts[AKey].c = cs->kbdc; alts[AKey].v = &rp; @@ -324,7 +324,6 @@ ctlerror(char *fmt, ...) vfprint(2, fmt, arg); va_end(arg); write(2, "\n", 1); - abort(); threadexitsall(buf); } @@ -377,8 +376,6 @@ ctlstrdup(char *s) t = strdup(s); if(t == nil) ctlerror("control strdup(%q) failed: %r", s); - - setmalloctag(t, getcallerpc(&s)); return t; } diff --git a/sys/src/libdraw/newwindow.c b/sys/src/libdraw/newwindow.c index dff608e0f..7b385a322 100644 --- a/sys/src/libdraw/newwindow.c +++ b/sys/src/libdraw/newwindow.c @@ -29,3 +29,4 @@ newwindow(char *str) return mount(fd, -1, "/dev", MBEFORE, buf); return bind("/mnt/wsys", "/dev", MBEFORE); } + diff --git a/sys/src/libmach/vdb.c b/sys/src/libmach/vdb.c index 1445ff273..6001813c1 100644 --- a/sys/src/libmach/vdb.c +++ b/sys/src/libmach/vdb.c @@ -836,10 +836,7 @@ format(char *mnemonic, Instr *i, char *f) break; case 'm': - if(i->function != 0) - bprint(i, "M(%s),%d", cop0regs[i->rd], i->function); - else - bprint(i, "M(%s)", cop0regs[i->rd]); + bprint(i, "M(%s)", cop0regs[i->rd]); break; case 'f': diff --git a/sys/src/libsec/port/const.c b/sys/src/libsec/port/const.c deleted file mode 100644 index 0cf400178..000000000 --- a/sys/src/libsec/port/const.c +++ /dev/null @@ -1,18 +0,0 @@ -#include - -/* - * returns 0 if the the len bytes in x are equal to len bytes in y, - * otherwise returns -1. - */ -int -constcmp(uchar *x, uchar *y, int len) -{ - uint z; - int i; - - for(z = 0, i = 0; i < len; i++) { - z |= x[i] ^ y[i]; - } - - return (1 & ((z - 1) >> 8)) - 1; -} diff --git a/sys/src/libsec/port/ecc.c b/sys/src/libsec/port/ecc.c index 09dd92858..261eebdd1 100644 --- a/sys/src/libsec/port/ecc.c +++ b/sys/src/libsec/port/ecc.c @@ -3,76 +3,6 @@ #include #include -ECdomain * -ecnamedcurve(int id) -{ - ECdomain *dom; - dom = malloc(sizeof(ECdomain)); - if(dom == nil) - return nil; - - switch(id) { - default: - free(dom); - return nil; - case Secp256r1: - dom->p = strtomp("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF", nil, 16, nil); - dom->a = strtomp("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC", nil, 16, nil); - dom->b = strtomp("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B", nil, 16, nil); - dom->G = strtoec(dom, "036B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296", nil, nil); - dom->n = strtomp("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551", nil, 16, nil); - dom->h = uitomp(1, nil); - break; - } - - if(dom->p == nil || dom->a == nil || dom->b == nil || dom->G == nil || dom->n == nil || dom->h == nil) { - ecfreedomain(dom); - return nil; - } - - return dom; -} - -void -ecfreepoint(ECpoint *pt) -{ - if(pt != nil) { - mpfree(pt->x); - mpfree(pt->y); - } - - free(pt); -} - -void -ecfreepriv(ECpriv *priv) -{ - if(priv != nil) { - mpfree(priv->x); - mpfree(priv->y); - mpfree(priv->d); - } - - free(priv); -} - -void -ecfreedomain(ECdomain *dom) -{ - if(dom != nil) { - mpfree(dom->p); - mpfree(dom->a); - mpfree(dom->b); - if(dom->G != nil) { - ecfreepoint(dom->G); - } - mpfree(dom->n); - mpfree(dom->h); - } - - free(dom); -} - void ecassign(ECdomain *, ECpoint *a, ECpoint *b) { @@ -399,54 +329,6 @@ mpsqrt(mpint *n, mpint *p, mpint *r) return 1; } -// converts the bytes in buf to an ECpoint x y pair. -// the domain is used to determine the number of bytes in x and y in the buffer. -ECpoint* -betoec(ECdomain *dom, uchar *buf, int blen, ECpoint *ret) -{ - int allocd, bytelen; - - allocd = 0; - bytelen = (mpsignif(dom->p)+7) >> 3; - - // sanity check arguments - if(dom == nil || buf == nil) - return nil; - - // check if input is too short for two mpints - if(blen != 1+2*bytelen) - return nil; - - // check that point is in uncompressed format - if(buf[0] != 4) - return nil; - - if(ret == nil) { - // allocate return pointer and mpints - allocd = 1; - ret = mallocz(sizeof(*ret), 1); - if(ret == nil) - return nil; - ret->x = mpnew(0); - ret->y = mpnew(0); - } - - // uncompressed form - if(betomp(buf+1, bytelen, ret->x) == nil) - goto err; - if(betomp(buf+1+bytelen, bytelen, ret->y) == nil) - goto err; - if(!ecverify(dom, ret)) - goto err; - return ret; - -err: - if(allocd){ - ecfreepoint(ret); - } - return nil; -} - ECpoint* strtoec(ECdomain *dom, char *s, char **rptr, ECpoint *ret) { @@ -500,8 +382,11 @@ strtoec(ECdomain *dom, char *s, char **rptr, ECpoint *ret) err: if(rptr) *rptr = s; - if(allocd) - ecfreepoint(ret); + if(allocd){ + mpfree(ret->x); + mpfree(ret->y); + free(ret); + } return nil; } diff --git a/sys/src/libsec/port/mkfile b/sys/src/libsec/port/mkfile index 91973cb26..60aebe629 100644 --- a/sys/src/libsec/port/mkfile +++ b/sys/src/libsec/port/mkfile @@ -22,7 +22,6 @@ CFILES = des.c desmodes.c desECB.c desCBC.c des3ECB.c des3CBC.c\ ripemd.c\ dh.c\ pbkdf2.c\ - const.c\ ALLOFILES=${CFILES:%.c=%.$O} diff --git a/sys/src/libsec/port/thumb.c b/sys/src/libsec/port/thumb.c index 8a2e53e97..21c92fe88 100644 --- a/sys/src/libsec/port/thumb.c +++ b/sys/src/libsec/port/thumb.c @@ -38,7 +38,7 @@ okThumbprint(uchar *sum, Thumbprint *table) return 0; hd = tablehead(sum, table); for(p = hd->next; p; p = p->next){ - if(constcmp(sum, p->sha1, SHA1dlen) == 0) + if(memcmp(sum, p->sha1, SHA1dlen) == 0) return 1; if(p == hd) break; diff --git a/sys/src/libsec/port/tlshand.c b/sys/src/libsec/port/tlshand.c index 8151c60c4..48c281068 100644 --- a/sys/src/libsec/port/tlshand.c +++ b/sys/src/libsec/port/tlshand.c @@ -854,57 +854,99 @@ ectobytes(int type, ECpoint *p) static Bytes* tlsSecECDHEc(TlsSec *sec, uchar *srandom, int vers, int curve, Bytes *Ys) { + Namedcurve *nc, *enc; Bytes *epm; - ECdomain *dom; - ECpoint K, *Y; - ECpriv *Q; - - epm = nil; - Y = nil; - Q = nil; + ECdomain dom; + ECpoint G, K, Y; + ECpriv Q; if(Ys == nil) return nil; + enc = &namedcurves[nelem(namedcurves)]; + for(nc = namedcurves; nc != enc; nc++) + if(nc->tlsid == curve) + break; + + if(nc == enc) + return nil; + memmove(sec->srandom, srandom, RandomSize); if(setVers(sec, vers) < 0) return nil; + + epm = nil; - dom = ecnamedcurve(curve); - if(dom == nil) - return nil; + memset(&dom, 0, sizeof(dom)); + dom.p = strtomp(nc->p, nil, 16, nil); + dom.a = strtomp(nc->a, nil, 16, nil); + dom.b = strtomp(nc->b, nil, 16, nil); + dom.n = strtomp(nc->n, nil, 16, nil); + dom.h = strtomp(nc->h, nil, 16, nil); + memset(&G, 0, sizeof(G)); + G.x = mpnew(0); + G.y = mpnew(0); + + memset(&Q, 0, sizeof(Q)); + Q.x = mpnew(0); + Q.y = mpnew(0); + Q.d = mpnew(0); memset(&K, 0, sizeof(K)); K.x = mpnew(0); K.y = mpnew(0); + memset(&Y, 0, sizeof(Y)); + Y.x = mpnew(0); + Y.y = mpnew(0); + + if(dom.p == nil || dom.a == nil || dom.b == nil || dom.n == nil || dom.h == nil) + goto Out; + if(Q.x == nil || Q.y == nil || Q.d == nil) + goto Out; + if(G.x == nil || G.y == nil) + goto Out; if(K.x == nil || K.y == nil) goto Out; - - Y = betoec(dom, Ys->data, Ys->len, nil); - if(Y == nil) + if(Y.x == nil || Y.y == nil) goto Out; - Q = ecgen(dom, nil); - if(Q == nil) + dom.G = strtoec(&dom, nc->G, nil, &G); + if(dom.G == nil) goto Out; - ecmul(dom, Y, Q->d, &K); + if(bytestoec(&dom, Ys, &Y) == nil) + goto Out; + + if(ecgen(&dom, &Q) == nil) + goto Out; + + ecmul(&dom, &Y, Q.d, &K); setMasterSecret(sec, mptobytes(K.x)); /* 0x04 = uncompressed public key */ - epm = ectobytes(0x04, Q); + epm = ectobytes(0x04, &Q); Out: - ecfreepriv(Q); - - ecfreepoint(Y); + mpfree(Y.x); + mpfree(Y.y); mpfree(K.x); mpfree(K.y); - ecfreedomain(dom); + mpfree(Q.x); + mpfree(Q.y); + mpfree(Q.d); + + mpfree(G.x); + mpfree(G.y); + + mpfree(dom.p); + mpfree(dom.a); + mpfree(dom.b); + mpfree(dom.n); + mpfree(dom.h); return epm; } @@ -1915,7 +1957,7 @@ setVersion(TlsConnection *c, int version) static int finishedMatch(TlsConnection *c, Finished *f) { - return constcmp(f->verify, c->finished.verify, f->n) == 0; + return memcmp(f->verify, c->finished.verify, f->n) == 0; } // free memory associated with TlsConnection struct diff --git a/sys/src/libsec/port/x509.c b/sys/src/libsec/port/x509.c index a6dc9e5d7..4751524c5 100644 --- a/sys/src/libsec/port/x509.c +++ b/sys/src/libsec/port/x509.c @@ -2212,7 +2212,7 @@ verify_signature(Bytes* signature, RSApub *pk, uchar *edigest, int edigestlen, E err = "bad digest length"; goto end; } - if(constcmp(digest->data, edigest, edigestlen) != 0) + if(memcmp(digest->data, edigest, edigestlen) != 0) err = "digests did not match"; end: diff --git a/sys/src/libthread/id.c b/sys/src/libthread/id.c index f8946c214..ebb563307 100644 --- a/sys/src/libthread/id.c +++ b/sys/src/libthread/id.c @@ -71,7 +71,7 @@ threadsetname(char *fmt, ...) va_start(arg, fmt); t->cmdname = vsmprint(fmt, arg); va_end(arg); - if(t->cmdname){ + if(t->cmdname && p->nthreads == 1){ snprint(buf, sizeof buf, "#p/%lud/args", _tos->pid); //getpid()); if((fd = open(buf, OWRITE)) >= 0){ write(fd, t->cmdname, strlen(t->cmdname)+1); diff --git a/sys/src/libthread/main.c b/sys/src/libthread/main.c index f9a794d1b..708b65ed1 100644 --- a/sys/src/libthread/main.c +++ b/sys/src/libthread/main.c @@ -31,7 +31,7 @@ main(int argc, char **argv) if(setjmp(_mainjmp)) _schedinit(p); - //_threaddebuglevel = (DBGSCHED|DBGCHAN|DBGREND); +//_threaddebuglevel = (DBGSCHED|DBGCHAN|DBGREND)^~0; _systhreadinit(); _qlockinit(_threadrendezvous); _sysfatal = _threadsysfatal;