From: Heiko Carstens <heiko.carstens@de.ibm.com>
To: chenliu@asset.uwaterloo.ca
Cc: schwidefsky@de.ibm.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2]early: fix possible overlapping data buffer
Date: Sat, 5 Mar 2011 06:21:31 +0100 [thread overview]
Message-ID: <20110305052131.GA2687@osiris.boeblingen.de.ibm.com> (raw)
In-Reply-To: <20110304151011.GA30600@asset.uwaterloo.ca>
On Fri, Mar 04, 2011 at 10:10:11AM -0500, chenliu@asset.uwaterloo.ca wrote:
> This patch fixes bugzilla #12965:
> https://bugzilla.kernel.org/show_bug.cgi?id=12965
>
> The original code contains dangerous uses of sprintf functions like
> sprintf(defsys_cmd, "%s EW MINSIZE=%.7iK PARMREGS=0-13", defsys_cmd, min_size),
> where defsys_cmd is defined as a fixed length buffer. Replace them with
> snprintf can fix such issues.
>
> Signed-off-by: Chen Liu <chenliunju@gmail.com>
> ---
> arch/s390/kernel/early.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
>
> --- a/arch/s390/kernel/early.c
> +++ b/arch/s390/kernel/early.c
> @@ -133,8 +133,8 @@ static noinline __init void create_kerne
> sinitrd_pfn = PFN_DOWN(__pa(INITRD_START));
> einitrd_pfn = PFN_UP(__pa(INITRD_START + INITRD_SIZE));
> min_size = einitrd_pfn << 2;
> - sprintf(defsys_cmd, "%s EW %.5X-%.5X", defsys_cmd,
> - sinitrd_pfn, einitrd_pfn);
> + snprintf(defsys_cmd, sizeof(defsys_cmd), "%s EW %.5X-%.5X",
> + defsys_cmd, sinitrd_pfn, einitrd_pfn);
> }
> #endif
This is not the right fix for the bugzilla. What is complained about is that
defsys_cmd is used both as input string as well as output string.
The result in this case is not really defined since all input strings must
be of type const char *, which in this case is obviously not true.
It just happens to work because the format string consumes the input string
first.
Right fix would be to remember the written bytes of the previous sprintf to
the string and use that as offset when adding something.
In _addition_ all sprintfs could be converted to snprintfs as well.
next prev parent reply other threads:[~2011-03-05 5:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-04 15:10 chenliu
2011-03-05 5:21 ` Heiko Carstens [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-03-04 14:19 chenliu
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=20110305052131.GA2687@osiris.boeblingen.de.ibm.com \
--to=heiko.carstens@de.ibm.com \
--cc=chenliu@asset.uwaterloo.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=schwidefsky@de.ibm.com \
/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
all inboxes | Powered by JetHome®