[lvm-devel] master - dmsetup: Detect invalid sector supplied to message.

Alasdair Kergon agk at fedoraproject.org
Wed Sep 18 00:26:34 UTC 2013


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=68f841fcda29ee0af177b0299b52842afcf1bae2
Commit:        68f841fcda29ee0af177b0299b52842afcf1bae2
Parent:        6e912d949b5f68dbf522c4ddb48b93461bdacfdd
Author:        Alasdair G Kergon <agk at redhat.com>
AuthorDate:    Wed Sep 18 01:24:19 2013 +0100
Committer:     Alasdair G Kergon <agk at redhat.com>
CommitterDate: Wed Sep 18 01:24:19 2013 +0100

dmsetup: Detect invalid sector supplied to message.

atoll doesn't check for errors, so invalid sector numbers were silently
accepted in the "dmsetup message" command.

(Mikulas)
---
 WHATS_NEW_DM    |    1 +
 tools/dmsetup.c |    9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 252f105..51c771c 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
 Version 1.02.80 - 
 ==================================
+  Detect invalid sector supplied to 'dmsetup message'.
   Free any previously-set string if a dm_task_set_* function is called again.
   Do not allow passing empty new name for dmsetup rename.
   Display any output returned by 'dmsetup message'.
diff --git a/tools/dmsetup.c b/tools/dmsetup.c
index 01f49c3..517e8aa 100644
--- a/tools/dmsetup.c
+++ b/tools/dmsetup.c
@@ -771,6 +771,8 @@ static int _message(CMD_ARGS)
 	struct dm_task *dmt;
 	char *str;
 	const char *response;
+	uint64_t sector;
+	char *endptr;
 
 	if (!(dmt = dm_task_create(DM_DEVICE_TARGET_MSG)))
 		return 0;
@@ -785,7 +787,12 @@ static int _message(CMD_ARGS)
 		argv++;
 	}
 
-	if (!dm_task_set_sector(dmt, (uint64_t) atoll(argv[1])))
+	sector = strtoull(argv[1], &endptr, 10);
+	if (*endptr || endptr == argv[1]) {
+		err("invalid sector");
+		goto out;
+	}
+	if (!dm_task_set_sector(dmt, sector))
 		goto out;
 
 	argc -= 2;




More information about the lvm-devel mailing list