On Jun 5, 2020, at 2:14 AM, Lukas Czerner <lczerner@xxxxxxxxxx> wrote: > > len argument in string_copy() is int, but it is used with malloc(), > strlen(), strncpy() and some callers use sizeof() to pass value in. So > it really ought to be size_t rather than int. Fix it. > > Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx> Thanks, having good types makes it much easier to follow code logic. There are still a bunch of places in e2fsprogs that are using "int" and "long" for various blocks, counters, etc. that could use more precise types. I did a bunch of cleanup when I reviewd all of the directory and allocation code for 64-bit issues. It still lingers elsewhere, but every fix improves the code a bit, if we keep an eye on other incoming changes. Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> > --- > e2fsck/e2fsck.h | 2 +- > e2fsck/util.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h > index 9b2b9ce8..85f953b2 100644 > --- a/e2fsck/e2fsck.h > +++ b/e2fsck/e2fsck.h > @@ -627,7 +627,7 @@ extern void log_err(e2fsck_t ctx, const char *fmt, ...) > extern void e2fsck_read_bitmaps(e2fsck_t ctx); > extern void e2fsck_write_bitmaps(e2fsck_t ctx); > extern void preenhalt(e2fsck_t ctx); > -extern char *string_copy(e2fsck_t ctx, const char *str, int len); > +extern char *string_copy(e2fsck_t ctx, const char *str, size_t len); > extern int fs_proc_check(const char *fs_name); > extern int check_for_modules(const char *fs_name); > #ifdef RESOURCE_TRACK > diff --git a/e2fsck/util.c b/e2fsck/util.c > index d98b8e47..88e0ea8a 100644 > --- a/e2fsck/util.c > +++ b/e2fsck/util.c > @@ -135,7 +135,7 @@ void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned long size, > } > > char *string_copy(e2fsck_t ctx EXT2FS_ATTR((unused)), > - const char *str, int len) > + const char *str, size_t len) > { > char *ret; > > -- > 2.21.3 > Cheers, Andreas
Attachment:
signature.asc
Description: Message signed with OpenPGP