diff options
author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-06-06 04:56:50 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-06-06 04:56:50 +0000 |
commit | 9310110448087364729bafc9c54a553f55395be3 (patch) | |
tree | 4a4adf8d8eb657d4e953f82cfd86fbed8a6fda88 /sys | |
parent | 0fda67822715f6b0bfaf257153995048b84a89d2 (diff) |
fix real cause of iso name truncation
Diffstat (limited to 'sys')
-rw-r--r-- | sys/lib/dist/mkfile | 2 | ||||
-rw-r--r-- | sys/src/cmd/9660srv/9660srv.c | 19 | ||||
-rw-r--r-- | sys/src/cmd/disk/9660/cdrdwr.c | 6 |
3 files changed, 11 insertions, 16 deletions
diff --git a/sys/lib/dist/mkfile b/sys/lib/dist/mkfile index b5b48da9c..e4e25cc5a 100644 --- a/sys/lib/dist/mkfile +++ b/sys/lib/dist/mkfile @@ -4,6 +4,6 @@ cd:V: /tmp/9front.iso %.iso: pc/plan9.ini.cd bind /n/src9 /n/src9/dist/plan9front bind pc/plan9.ini.cd /n/src9/cfg/plan9.ini - disk/mk9660 -9j -B 386/9bootiso -p /n/src9/sys/lib/sysconfig/proto/cdproto -s /n/src9 -v 'Plan 9 Front' $target + disk/mk9660 -c9j -B 386/9bootiso -p /n/src9/sys/lib/sysconfig/proto/cdproto -s /n/src9 -v 'Plan 9 Front' $target unmount /n/src9/cfg/plan9.ini unmount /n/src9/dist/plan9front diff --git a/sys/src/cmd/9660srv/9660srv.c b/sys/src/cmd/9660srv/9660srv.c index 5d4d0309b..37dbd444b 100644 --- a/sys/src/cmd/9660srv/9660srv.c +++ b/sys/src/cmd/9660srv/9660srv.c @@ -569,7 +569,6 @@ rzdir(Xfs *fs, Dir *d, int fmt, Drec *dp) char buf[Maxname+UTFmax+1]; uchar *q; Rune r; - enum { ONAMELEN = 28 }; /* old Plan 9 directory name length */ have = 0; flags = 0; @@ -622,23 +621,23 @@ rzdir(Xfs *fs, Dir *d, int fmt, Drec *dp) * from plan9 directory extension */ nl = *s; - if(nl >= ONAMELEN) - nl = ONAMELEN-1; + if(nl >= Maxname) + nl = Maxname-1; if(nl) { - memset(d->name, 0, ONAMELEN); + memset(d->name, 0, Maxname); memmove(d->name, s+1, nl); } s += 1 + *s; nl = *s; - if(nl >= ONAMELEN) - nl = ONAMELEN-1; - memset(d->uid, 0, ONAMELEN); + if(nl >= Maxname) + nl = Maxname-1; + memset(d->uid, 0, Maxname); memmove(d->uid, s+1, nl); s += 1 + *s; nl = *s; - if(nl >= ONAMELEN) - nl = ONAMELEN-1; - memset(d->gid, 0, ONAMELEN); + if(nl >= Maxname) + nl = Maxname-1; + memset(d->gid, 0, Maxname); memmove(d->gid, s+1, nl); s += 1 + *s; if(((uintptr)s) & 1) diff --git a/sys/src/cmd/disk/9660/cdrdwr.c b/sys/src/cmd/disk/9660/cdrdwr.c index 21c9c047a..36e849377 100644 --- a/sys/src/cmd/disk/9660/cdrdwr.c +++ b/sys/src/cmd/disk/9660/cdrdwr.c @@ -195,8 +195,7 @@ Creadblock(Cdimg *cd, void *buf, ulong block, ulong len) int parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int)) { - enum { NAMELEN = 28 }; - char name[NAMELEN]; + char name[256]; uchar *p; Cdir *c; @@ -230,7 +229,6 @@ parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int) if((p-buf)&1) p++; assert(p < buf+c->len); - assert(*p < NAMELEN); if(*p != 0) { memmove(name, p+1, *p); name[*p] = '\0'; @@ -238,12 +236,10 @@ parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int) d->name = atom(name); } p += *p+1; - assert(*p < NAMELEN); memmove(name, p+1, *p); name[*p] = '\0'; d->uid = atom(name); p += *p+1; - assert(*p < NAMELEN); memmove(name, p+1, *p); name[*p] = '\0'; d->gid = atom(name); |