Whamcloud - gitweb
LU-5808 llog: check name strictly to avoid invalid record 37/12437/2
authorLi Xi <lixi@ddn.com>
Mon, 27 Oct 2014 13:54:25 +0000 (21:54 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 4 Dec 2014 13:31:07 +0000 (13:31 +0000)
Records for a file system cound be written to llog of another file
system by mistake if the name of the former one is the prefix of
the latter one. This patch fixes the problem by using more strict
checking of llog name.

Signed-off-by: Li Xi <lixi@ddn.com>
Change-Id: If45c59b0226b71e8a95f9aa719eae8412c89a2f1
Reviewed-on: http://review.whamcloud.com/12437
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
lustre/mgs/mgs_llog.c

index 60a0685..c47208b 100644 (file)
@@ -1469,7 +1469,9 @@ int mgs_write_log_direct_all(const struct lu_env *env, struct mgs_device *mgs,
                if (server_only && strstr(dirent->mde_name, "-client") != NULL)
                        goto next;
 
-               if (strncmp(fsname, dirent->mde_name, len) != 0)
+               if (strlen(dirent->mde_name) <= len ||
+                   strncmp(fsname, dirent->mde_name, len) != 0 ||
+                   dirent->mde_name[len] != '-')
                        goto next;
 
                CDEBUG(D_MGS, "Changing log %s\n", dirent->mde_name);