On Wed, Aug 06, 2008 at 03:34:30PM -0000, boga wrote:
> May be you can improve JFS test strength by adding check for the correct
> relations between the superblock fields: s_bsize, s_l2bsize,
> s_l2bfactor, s_pbsize, s_l2pbsize?

This is also a good idea, even if I don't move the probe order of the
tests around.  (The patch to explicitly check for DFSee should solve
your particular issue.)

                                                - Ted

commit ddd46b9b85c158fb51c0ba45ec11b7c032fb457f
Author: Theodore Ts'o <[EMAIL PROTECTED]>
Date:   Sat Aug 23 22:27:22 2008 -0400

    libblkid: Strength the JFS probe routine
    
    Check to make sure a JFS filesystem is really correct by checking the
    relationship between the following fields in the JFS superblock:
    s_bsize, s_l2bsize, s_pbsize, s_l2pbsize, and s_l2bfactor.  Thanks to
    Lesh Bogdanow for this suggestion.
    
    Signed-off-by: "Theodore Ts'o" <[EMAIL PROTECTED]>

diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 31f3c74..91db9a1 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -781,6 +781,16 @@ static int probe_jfs(struct blkid_probe *probe,
 
        js = (struct jfs_super_block *)buf;
 
+       if (blkid_le32(js->js_bsize) != (1 << blkid_le16(js->js_l2bsize)))
+               return 1;
+
+       if (blkid_le32(js->js_pbsize) != (1 << blkid_le16(js->js_l2pbsize)))
+               return 1;
+
+       if ((blkid_le16(js->js_l2bsize) - blkid_le16(js->js_l2pbsize)) !=
+           blkid_le16(js->js_l2bfactor))
+               return 1;
+
        if (strlen((char *) js->js_label))
                label = (char *) js->js_label;
        blkid_set_tag(probe->dev, "LABEL", label, sizeof(js->js_label));
diff --git a/lib/blkid/probe.h b/lib/blkid/probe.h
index ac3a083..993156d 100644
--- a/lib/blkid/probe.h
+++ b/lib/blkid/probe.h
@@ -181,10 +181,13 @@ struct jfs_super_block {
        unsigned char   js_magic[4];
        __u32           js_version;
        __u64           js_size;
-       __u32           js_bsize;
-       __u32           js_dummy1;
-       __u32           js_pbsize;
-       __u32           js_dummy2[27];
+       __u32           js_bsize;       /* 4: aggregate block size in bytes */
+       __u16           js_l2bsize;     /* 2: log2 of s_bsize */
+       __u16           js_l2bfactor;   /* 2: log2(s_bsize/hardware block size) 
*/
+       __u32           js_pbsize;      /* 4: hardware/LVM block size in bytes 
*/
+       __u16           js_l2pbsize;    /* 2: log2 of s_pbsize */
+       __u16           js_pad;         /* 2: padding necessary for alignment */
+       __u32           js_dummy2[26];
        unsigned char   js_uuid[16];
        unsigned char   js_label[16];
        unsigned char   js_loguuid[16];

-- 
blkid library detects JFS partition as FAT32
https://bugs.launchpad.net/bugs/255255
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to