public inbox for linux-fsdevel@vger.kernel.org
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: David Disseldorp <ddiss@suse.de>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	Al Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
	Steven Rostedt <rostedt@goodmis.org>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v3 1/6] initramfs_test: add fill_cpio() format parameter
Date: Thu, 26 Mar 2026 17:23:11 +0100	[thread overview]
Message-ID: <acVdb6wb5GuEpb3x@pathway.suse.cz> (raw)
In-Reply-To: <20260323150054.3587083-2-andriy.shevchenko@linux.intel.com>

On Mon 2026-03-23 15:54:17, Andy Shevchenko wrote:
> From: David Disseldorp <ddiss@suse.de>
> 
> fill_cpio() uses sprintf() to write out the in-memory cpio archive from
> an array of struct initramfs_test_cpio. This change allows callers to
> override the cpio sprintf() format string so that future tests can
> intentionally corrupt the header with non-hex values.
> 
> --- a/init/initramfs_test.c
> +++ b/init/initramfs_test.c
> @@ -27,7 +27,10 @@ struct initramfs_test_cpio {
>  	char *data;
>  };
>  
> -static size_t fill_cpio(struct initramfs_test_cpio *cs, size_t csz, char *out)
> +#define CPIO_HDR_FMT "%s%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%s"
> +
> +static size_t fill_cpio(struct initramfs_test_cpio *cs, size_t csz, char *fmt,
> +			char *out)

This should be "const char *fmt" as pointed out by
https://sashiko.dev/#/patchset/20260323150054.3587083-1-andriy.shevchenko%40linux.intel.com

>  {
>  	int i;
>  	size_t off = 0;
> @@ -38,9 +41,7 @@ static size_t fill_cpio(struct initramfs_test_cpio *cs, size_t csz, char *out)
>  		size_t thislen;
>  
>  		/* +1 to account for nulterm */
> -		thislen = sprintf(pos, "%s"
> -			"%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x"
> -			"%s",
> +		thislen = sprintf(pos, fmt,
>  			c->magic, c->ino, c->mode, c->uid, c->gid, c->nlink,
>  			c->mtime, c->filesize, c->devmajor, c->devminor,
>  			c->rdevmajor, c->rdevminor, c->namesize, c->csum,

The compiler is not longer able to check whether the number/type of
parameters match the given printf format. It was poitned out by
Sashiko.dev AI and I agree that it makes it harder to maintain.

A solution might be to split this sprintf out into a macro.
Or add some "bool inject_ox" parameter and keep the format
hardcoded here.

I did not found any other problems ;-)

Best Regards,
Petr

  reply	other threads:[~2026-03-26 16:23 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-23 14:54 [PATCH v3 0/6] initramfs: test and improve cpio hex header validation Andy Shevchenko
2026-03-23 14:54 ` [PATCH v3 1/6] initramfs_test: add fill_cpio() format parameter Andy Shevchenko
2026-03-26 16:23   ` Petr Mladek [this message]
2026-03-26 23:10     ` David Disseldorp
2026-03-23 14:54 ` [PATCH v3 2/6] initramfs_test: test header fields with 0x hex prefix Andy Shevchenko
2026-03-23 14:54 ` [PATCH v3 3/6] initramfs: Sort headers alphabetically Andy Shevchenko
2026-03-23 22:38   ` David Disseldorp
2026-03-23 14:54 ` [PATCH v3 4/6] initramfs: Refactor to use hex2bin() instead of custom approach Andy Shevchenko
2026-03-23 14:54 ` [PATCH v3 5/6] vsprintf: Revert "add simple_strntoul" Andy Shevchenko
2026-03-23 22:38   ` David Disseldorp
2026-03-26 16:32   ` Petr Mladek
2026-03-23 14:54 ` [PATCH v3 6/6] kstrtox: Drop extern keyword in the simple_strtox() declarations Andy Shevchenko
2026-03-23 22:38   ` David Disseldorp
2026-03-26 16:33   ` Petr Mladek
2026-03-23 22:07 ` [PATCH v3 0/6] initramfs: test and improve cpio hex header validation Andrew Morton
2026-03-23 23:07   ` David Disseldorp
2026-03-24  8:38   ` Christian Brauner
2026-03-26 16:39 ` Petr Mladek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=acVdb6wb5GuEpb3x@pathway.suse.cz \
    --to=pmladek@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=brauner@kernel.org \
    --cc=ddiss@suse.de \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox