summaryrefslogtreecommitdiff
path: root/sysutils/xentools3/patches/patch-dg
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/xentools3/patches/patch-dg')
-rw-r--r--sysutils/xentools3/patches/patch-dg41
1 files changed, 41 insertions, 0 deletions
diff --git a/sysutils/xentools3/patches/patch-dg b/sysutils/xentools3/patches/patch-dg
new file mode 100644
index 00000000000..18b00a23bc0
--- /dev/null
+++ b/sysutils/xentools3/patches/patch-dg
@@ -0,0 +1,41 @@
+$NetBSD: patch-dg,v 1.1 2008/03/03 16:45:27 hannken Exp $
+
+--- libfsimage/ufs/fsys_ufs.c.orig 2008-01-31 11:06:54.000000000 +0100
++++ libfsimage/ufs/fsys_ufs.c 2008-03-02 18:14:30.000000000 +0100
+@@ -32,8 +32,9 @@
+ #define SUPERBLOCK ((struct fs *)(FSYS_BUF + 0x2000))
+ #define INODE ((struct icommon *)(FSYS_BUF + 0x1000))
+ #define DIRENT (FSYS_BUF + 0x4000)
++#define MAXBSIZE ((FSYS_BUFLEN - 0x4000) / 2)
+ #define INDIRBLK1 ((grub_daddr32_t *)(FSYS_BUF + 0x4000)) /* 2+ indir blk */
+-#define INDIRBLK0 ((grub_daddr32_t *)(FSYS_BUF+ 0x6000)) /* 1st indirect blk */
++#define INDIRBLK0 ((grub_daddr32_t *)(FSYS_BUF+ 0x4000 + MAXBSIZE)) /* 1st indirect blk */
+
+ #define indirblk0 (*fsig_int1(ffi))
+ #define indirblk1 (*fsig_int2(ffi))
+@@ -48,7 +49,8 @@ ufs_mount(fsi_file_t *ffi, const char *o
+ {
+ if (/*! IS_PC_SLICE_TYPE_SOLARIS(current_slice) || */
+ !devread(ffi, UFS_SBLOCK, 0, UFS_SBSIZE, (char *)SUPERBLOCK) ||
+- SUPERBLOCK->fs_magic != UFS_MAGIC)
++ SUPERBLOCK->fs_magic != UFS_MAGIC ||
++ MAXBSIZE < SUPERBLOCK->fs_bsize)
+ return 0;
+
+ return 1;
+@@ -72,13 +74,13 @@ ufs_dir(fsi_file_t *ffi, char *dirname)
+ while (*dirname == '/')
+ dirname++;
+
+- while (inode && *dirname && !isspace(*dirname)) {
++ while (inode && *dirname && !isspace((uint8_t)*dirname)) {
+ if (!openi(ffi, inode))
+ return 0;
+
+ /* parse for next path component */
+ fname = dirname;
+- while (*dirname && !isspace(*dirname) && *dirname != '/')
++ while (*dirname && !isspace((uint8_t)*dirname) && *dirname != '/')
+ dirname++;
+ ch = *dirname;
+ *dirname = 0; /* ensure null termination */