[dm-devel] [PATCH] dm-ingerity: change memcmp to strncmp

James Bottomley James.Bottomley at HansenPartnership.com
Wed Mar 13 14:40:26 UTC 2019


On Wed, 2019-03-13 at 07:56 -0400, Mikulas Patocka wrote:
> If the string opt_string is small, the function memcmp can access
> bytes
> that are beyond the terminating nul character. In theory, it could
> cause
> segfault, if opt_string were located just below some unmapped memory.
> 
> This patch changes memcmp to strncmp, so that we don't read bytes
> beyond
> the end of the string.
> 
> Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
> Cc: stable at vger.kernel.org	# v4.12+
> 
> ---
>  drivers/md/dm-integrity.c |    8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> Index: linux-2.6/drivers/md/dm-integrity.c
> ===================================================================
> --- linux-2.6.orig/drivers/md/dm-integrity.c	2019-03-12
> 15:33:17.000000000 +0100
> +++ linux-2.6/drivers/md/dm-integrity.c	2019-03-12
> 15:34:49.000000000 +0100
> @@ -3185,7 +3185,7 @@ static int dm_integrity_ctr(struct dm_ta
>  			journal_watermark = val;
>  		else if (sscanf(opt_string, "commit_time:%u%c",
> &val, &dummy) == 1)
>  			sync_msec = val;
> -		else if (!memcmp(opt_string, "meta_device:",
> strlen("meta_device:"))) {
> +		else if (!strncmp(opt_string, "meta_device:",
> strlen("meta_device:"))) {

strncmp(a, b, strlen(b)) is semantically equivalent to strcmp(a,b) but
the latter is far shorter and easier so you should use it.

James




More information about the dm-devel mailing list