summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/isofs/cd9660/cd9660_lookup.c11
-rw-r--r--sys/isofs/cd9660/cd9660_vnops.c19
2 files changed, 20 insertions, 10 deletions
diff --git a/sys/isofs/cd9660/cd9660_lookup.c b/sys/isofs/cd9660/cd9660_lookup.c
index 4fd4d2cad3e..d0bf7cca7d4 100644
--- a/sys/isofs/cd9660/cd9660_lookup.c
+++ b/sys/isofs/cd9660/cd9660_lookup.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd9660_lookup.c,v 1.11 2003/06/02 23:28:05 millert Exp $ */
+/* $OpenBSD: cd9660_lookup.c,v 1.12 2006/01/25 21:15:55 mickey Exp $ */
/* $NetBSD: cd9660_lookup.c,v 1.18 1997/05/08 16:19:59 mycroft Exp $ */
/*-
@@ -46,6 +46,7 @@
#include <sys/vnode.h>
#include <sys/mount.h>
#include <sys/systm.h>
+#include <sys/malloc.h>
#include <isofs/cd9660/iso.h>
#include <isofs/cd9660/cd9660_extern.h>
@@ -118,7 +119,7 @@ cd9660_lookup(v)
ino_t ino = 0;
int reclen;
u_short namelen;
- char altname[NAME_MAX];
+ char *altname;
int res;
int assoc, len;
char *name;
@@ -288,10 +289,14 @@ searchloop:
else
ino = dbtob(bp->b_blkno) + entryoffsetinblock;
dp->i_ino = ino;
+ MALLOC(altname, char *, NAME_MAX, M_TEMP, M_WAITOK);
cd9660_rrip_getname(ep,altname,&namelen,&dp->i_ino,imp);
if (namelen == cnp->cn_namelen
- && !bcmp(name,altname,namelen))
+ && !bcmp(name,altname,namelen)) {
+ FREE(altname, M_TEMP);
goto found;
+ }
+ FREE(altname, M_TEMP);
ino = 0;
break;
}
diff --git a/sys/isofs/cd9660/cd9660_vnops.c b/sys/isofs/cd9660/cd9660_vnops.c
index c21d5cc0a88..670f7b41b41 100644
--- a/sys/isofs/cd9660/cd9660_vnops.c
+++ b/sys/isofs/cd9660/cd9660_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd9660_vnops.c,v 1.33 2005/11/19 02:18:01 pedro Exp $ */
+/* $OpenBSD: cd9660_vnops.c,v 1.34 2006/01/25 21:15:55 mickey Exp $ */
/* $NetBSD: cd9660_vnops.c,v 1.42 1997/10/16 23:56:57 christos Exp $ */
/*-
@@ -350,18 +350,23 @@ cd9660_read(v)
} else {
#define MAX_RA 32
if (ci->ci_lastr + 1 == lbn) {
- daddr_t rablks[MAX_RA];
- int rasizes[MAX_RA];
+ struct ra {
+ daddr_t blks[MAX_RA];
+ int sizes[MAX_RA];
+ } *ra;
int i;
+ MALLOC(ra, struct ra *, sizeof *ra,
+ M_TEMP, M_WAITOK);
for (i = 0; i < MAX_RA &&
lblktosize(imp, (rablock + i)) < ip->i_size;
i++) {
- rablks[i] = rablock + i;
- rasizes[i] = blksize(imp, ip, rablock + i);
+ ra->blks[i] = rablock + i;
+ ra->sizes[i] = blksize(imp, ip, rablock + i);
}
- error = breadn(vp, lbn, size, rablks,
- rasizes, i, NOCRED, &bp);
+ error = breadn(vp, lbn, size, ra->blks,
+ ra->sizes, i, NOCRED, &bp);
+ FREE(ra, M_TEMP);
} else
error = bread(vp, lbn, size, NOCRED, &bp);
}