2020-04-05 04:58:22

by Michael Forney

[permalink] [raw]
Subject: [PATCH] libext2fs: avoid pointer arithmetic on `void *`

The pointer operand to the binary `+` operator must be to a complete
object type.

Signed-off-by: Michael Forney <[email protected]>
---
lib/ext2fs/csum.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c
index 8513d1ab..c2550365 100644
--- a/lib/ext2fs/csum.c
+++ b/lib/ext2fs/csum.c
@@ -274,7 +274,7 @@ static errcode_t __get_dirent_tail(ext2_filsys fs,
rec_len = translate(d->rec_len);
}

- if ((void *)d > ((void *)dirent + fs->blocksize))
+ if ((char *)d > ((char *)dirent + fs->blocksize))
return EXT2_ET_DIR_CORRUPTED;
if (d != top)
return EXT2_ET_DIR_NO_SPACE_FOR_CSUM;
--
2.26.0


2020-04-06 01:00:50

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH] libext2fs: avoid pointer arithmetic on `void *`

On Apr 4, 2020, at 10:53 PM, Michael Forney <[email protected]> wrote:
>
> The pointer operand to the binary `+` operator must be to a complete
> object type.
>
> Signed-off-by: Michael Forney <[email protected]>

Seems straight forward enough. Not needed for GCC, but strictly correct.

Reviewed-by: Andreas Dilger <[email protected]>

> ---
> lib/ext2fs/csum.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c
> index 8513d1ab..c2550365 100644
> --- a/lib/ext2fs/csum.c
> +++ b/lib/ext2fs/csum.c
> @@ -274,7 +274,7 @@ static errcode_t __get_dirent_tail(ext2_filsys fs,
> rec_len = translate(d->rec_len);
> }
>
> - if ((void *)d > ((void *)dirent + fs->blocksize))
> + if ((char *)d > ((char *)dirent + fs->blocksize))
> return EXT2_ET_DIR_CORRUPTED;
> if (d != top)
> return EXT2_ET_DIR_NO_SPACE_FOR_CSUM;
> --
> 2.26.0
>


Cheers, Andreas






Attachments:
signature.asc (890.00 B)
Message signed with OpenPGP

2020-04-15 06:49:03

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] libext2fs: avoid pointer arithmetic on `void *`

On Sun, Apr 05, 2020 at 06:43:09PM -0600, Andreas Dilger wrote:
> On Apr 4, 2020, at 10:53 PM, Michael Forney <[email protected]> wrote:
> >
> > The pointer operand to the binary `+` operator must be to a complete
> > object type.
> >
> > Signed-off-by: Michael Forney <[email protected]>
>
> Seems straight forward enough. Not needed for GCC, but strictly correct.
>
> Reviewed-by: Andreas Dilger <[email protected]>

Applied, thanks.

- Ted