Whamcloud - gitweb
b=11564
authornathan <nathan>
Mon, 12 Feb 2007 21:52:46 +0000 (21:52 +0000)
committernathan <nathan>
Mon, 12 Feb 2007 21:52:46 +0000 (21:52 +0000)
bad null-termination of 8-char filesystem names

lustre/mgs/lproc_mgs.c
lustre/mgs/mgs_internal.h
lustre/mgs/mgs_llog.c
lustre/tests/cfg/local.sh
lustre/tests/conf-sanity.sh

index acfab55..2453dc3 100644 (file)
@@ -103,10 +103,10 @@ static int mgs_live_seq_show(struct seq_file *seq, void *v)
                    fsdb->fsdb_flags, fsdb->fsdb_gen);
         for (i = 0; i < INDEX_MAP_SIZE * 8; i++)
                  if (test_bit(i, fsdb->fsdb_mdt_index_map)) 
                    fsdb->fsdb_flags, fsdb->fsdb_gen);
         for (i = 0; i < INDEX_MAP_SIZE * 8; i++)
                  if (test_bit(i, fsdb->fsdb_mdt_index_map)) 
-                         seq_printf(seq, "%.8s-MDT%04x\n", fsdb->fsdb_name, i);
+                         seq_printf(seq, "%s-MDT%04x\n", fsdb->fsdb_name, i);
         for (i = 0; i < INDEX_MAP_SIZE * 8; i++)
                  if (test_bit(i, fsdb->fsdb_ost_index_map)) 
         for (i = 0; i < INDEX_MAP_SIZE * 8; i++)
                  if (test_bit(i, fsdb->fsdb_ost_index_map)) 
-                         seq_printf(seq, "%.8s-OST%04x\n", fsdb->fsdb_name, i);
+                         seq_printf(seq, "%s-OST%04x\n", fsdb->fsdb_name, i);
 
         up(&fsdb->fsdb_sem);
         return 0;
 
         up(&fsdb->fsdb_sem);
         return 0;
index a13bd95..81c94ad 100644 (file)
@@ -29,7 +29,7 @@ int class_dentry_readdir(struct obd_device *obd, struct dentry *dir,
 #define FSDB_OLDLOG14   0x0002  /* log starts in old (1.4) style */
 
 struct fs_db {
 #define FSDB_OLDLOG14   0x0002  /* log starts in old (1.4) style */
 
 struct fs_db {
-        char              fsdb_name[8];
+        char              fsdb_name[9];
         struct list_head  fsdb_list;           /* list of databases */
         struct semaphore  fsdb_sem;
         void             *fsdb_ost_index_map;  /* bitmap of used indicies */
         struct list_head  fsdb_list;           /* list of databases */
         struct semaphore  fsdb_sem;
         void             *fsdb_ost_index_map;  /* bitmap of used indicies */
index 4dadf73..e062bfc 100644 (file)
@@ -292,6 +292,7 @@ static struct fs_db *mgs_new_fsdb(struct obd_device *obd, char *fsname)
         }
         
         strncpy(fsdb->fsdb_name, fsname, sizeof(fsdb->fsdb_name));
         }
         
         strncpy(fsdb->fsdb_name, fsname, sizeof(fsdb->fsdb_name));
+        fsdb->fsdb_name[sizeof(fsdb->fsdb_name) - 1] = 0;
         rc = name_create(&fsdb->fsdb_mdtlov, fsname, "-mdtlov");
         if (rc) 
                 GOTO(err, rc);
         rc = name_create(&fsdb->fsdb_mdtlov, fsname, "-mdtlov");
         if (rc) 
                 GOTO(err, rc);
index 475847f..2d24613 100644 (file)
@@ -1,4 +1,4 @@
-FSNAME=lustre
+FSNAME=${FSNAME:-lustre}
 
 # facet hosts
 mds_HOST=${mds_HOST:-`hostname`}
 
 # facet hosts
 mds_HOST=${mds_HOST:-`hostname`}
index 9fc1b3a..546a0d8 100644 (file)
@@ -820,17 +820,19 @@ test_23() {
 
 test_24a() {
        local fs2mds_HOST=$mds_HOST
 
 test_24a() {
        local fs2mds_HOST=$mds_HOST
-        add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME}2 --nomgs --mgsnode=$MGSNID --reformat ${MDSDEV}_2 || exit 10
+       # test 8-char fsname as well
+       local FSNAME2=test1234
+        add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME2} --nomgs --mgsnode=$MGSNID --reformat ${MDSDEV}_2 || exit 10
 
        local fs2ost_HOST=$ost_HOST
        local fs2ostdev=$(ostdevname 1)_2
 
        local fs2ost_HOST=$ost_HOST
        local fs2ostdev=$(ostdevname 1)_2
-       add fs2ost $OST_MKFS_OPTS --fsname=${FSNAME}2 --reformat $fs2ostdev || exit 10
+       add fs2ost $OST_MKFS_OPTS --fsname=${FSNAME2} --reformat $fs2ostdev || exit 10
 
        setup
        start fs2mds ${MDSDEV}_2 $MDS_MOUNT_OPTS
        start fs2ost $fs2ostdev $OST_MOUNT_OPTS
        mkdir -p $MOUNT2
 
        setup
        start fs2mds ${MDSDEV}_2 $MDS_MOUNT_OPTS
        start fs2ost $fs2ostdev $OST_MOUNT_OPTS
        mkdir -p $MOUNT2
-       mount -t lustre $MGSNID:/${FSNAME}2 $MOUNT2 || return 1
+       mount -t lustre $MGSNID:/${FSNAME2} $MOUNT2 || return 1
        # 1 still works
        check_mount || return 2
        # files written on 1 should not show up on 2
        # 1 still works
        check_mount || return 2
        # files written on 1 should not show up on 2