[Ocfs2-tools-devel] [PATCH 02/18] tunefs.ocfs2: Fix a substring bug in op_set_label.

Joel Becker joel.becker at oracle.com
Mon Jan 5 18:33:38 PST 2009


If tunefs was trying to set the label of a filesystem to a substring of
the current label, it would consider the label already set, because it
wasn't checking the string terminator.

For example, a filesystem has the label "server12".  tunefs is run with
the label "server1" (that is, 'tunefs -L server1').  tunefs will compare
the two strings, but only to the length of the new label.  Since the new
label is the same as the start of the old label, tunefs says "label
already set" and does nothing.  This is wrong.

The fix is to compare one byte more than the length of the new label.
This includes the string terminating NUL character.

Signed-off-by: Joel Becker <joel.becker at oracle.com>
---
 tunefs.ocfs2/op_set_label.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tunefs.ocfs2/op_set_label.c b/tunefs.ocfs2/op_set_label.c
index 7aeda91..c0a62a8 100644
--- a/tunefs.ocfs2/op_set_label.c
+++ b/tunefs.ocfs2/op_set_label.c
@@ -30,7 +30,7 @@
 static errcode_t update_volume_label(ocfs2_filesys *fs, const char *label)
 {
 	errcode_t err;
-	int len = strlen(label);
+	int len = strlen(label) + 1;  /* Compare the NUL too */
 
 	if (len > OCFS2_MAX_VOL_LABEL_LEN)
 		len = OCFS2_MAX_VOL_LABEL_LEN;
-- 
1.5.6.5




More information about the Ocfs2-tools-devel mailing list