[lvm-devel] master - dmsetup: validate strtol reading

Zdenek Kabelac zkabelac at sourceware.org
Fri Aug 25 12:24:56 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=962874bfe2a3c3511e42fe29f0f013c780f65e63
Commit:        962874bfe2a3c3511e42fe29f0f013c780f65e63
Parent:        47b7d4a7336fa60eb25ad15b2fc3fcb5b96ce1c2
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Aug 25 11:48:17 2017 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Aug 25 14:20:59 2017 +0200

dmsetup: validate strtol reading

Better validation for --mode option.
---
 tools/dmsetup.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/tools/dmsetup.c b/tools/dmsetup.c
index 341522c..d9532fb 100644
--- a/tools/dmsetup.c
+++ b/tools/dmsetup.c
@@ -7054,7 +7054,13 @@ static int _process_switches(int *argcp, char ***argvp, const char *dev_dir)
 		if (c == 'M' || ind == MODE_ARG) {
 			_switches[MODE_ARG]++;
 			/* FIXME Accept modes as per chmod */
-			_int_args[MODE_ARG] = (int) strtol(optarg, NULL, 8);
+			errno = 0;
+			_int_args[MODE_ARG] = (int) strtol(optarg, &s, 8);
+			if (errno || !s || *s || !_int_args[MODE_ARG]) {
+				log_error("Invalid argument for --mode: %s. %s",
+					  optarg, errno ? strerror(errno) : "");
+				return 0;
+			}
 		}
 		if (ind == DEFERRED_ARG)
 			_switches[DEFERRED_ARG]++;




More information about the lvm-devel mailing list