[lvm-devel] LVM2 ./WHATS_NEW daemons/cmirrord/functions.c

zkabelac at sourceware.org zkabelac at sourceware.org
Tue Sep 6 18:24:27 UTC 2011


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac at sourceware.org	2011-09-06 18:24:27

Modified files:
	.              : WHATS_NEW 
	daemons/cmirrord: functions.c 

Log message:
	Detect sscanf recovering_region input error
	
	Missing check for sscanf found by static analyzer.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2092&r2=1.2093
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/cmirrord/functions.c.diff?cvsroot=lvm2&r1=1.27&r2=1.28

--- LVM2/WHATS_NEW	2011/09/06 18:15:43	1.2092
+++ LVM2/WHATS_NEW	2011/09/06 18:24:27	1.2093
@@ -1,5 +1,6 @@
 Version 2.02.89 - 
 ==================================
+  Detect sscanf recovering_region input error in cmirrord pull_state().
   Fix error path bitmap leak in cmirrord import_checkpoint().
   Log unlink() error in cmirrord remove_lockfile().
   Remove incorrect requirement for -j or -m from lvchange error message.
--- LVM2/daemons/cmirrord/functions.c	2010/12/20 13:58:38	1.27
+++ LVM2/daemons/cmirrord/functions.c	2011/09/06 18:24:27	1.28
@@ -1817,8 +1817,11 @@
 	}
 
 	if (!strncmp(which, "recovering_region", 17)) {
-		sscanf(buf, "%llu %u", (unsigned long long *)&lc->recovering_region,
-		       &lc->recoverer);
+		if (sscanf(buf, "%llu %u", (unsigned long long *)&lc->recovering_region,
+			   &lc->recoverer) != 2) {
+			LOG_ERROR("cannot parse recovering region from: %s", buf);
+			return -EINVAL;
+		}
 		LOG_SPRINT(lc, "CKPT INIT - SEQ#=X, UUID=%s, nodeid = X:: "
 			   "recovering_region=%llu, recoverer=%u",
 			   SHORT_UUID(lc->uuid),




More information about the lvm-devel mailing list