netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Tobin C. Harding" <me@tobin.cc>
To: Joe Perches <joe@perches.com>
Cc: kernel-hardening@lists.openwall.com,
	Steven Rostedt <rostedt@goodmis.org>,
	Tycho Andersen <tycho@tycho.ws>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Kees Cook <keescook@chromium.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	Alexei Starovoitov <ast@kernel.org>,
	linux-kernel@vger.kernel.org,
	Network Development <netdev@vger.kernel.org>
Subject: Re: [PATCH 2/3] vsprintf: print <no-symbol> if symbol not found
Date: Mon, 18 Dec 2017 12:04:26 +1100	[thread overview]
Message-ID: <20171218010426.GY2191@eros> (raw)
In-Reply-To: <1513555454.31581.43.camel@perches.com>

On Sun, Dec 17, 2017 at 04:04:14PM -0800, Joe Perches wrote:
> On Mon, 2017-12-18 at 10:53 +1100, Tobin C. Harding wrote:
> > Depends on: commit bd6b239cdbb2 ("kallsyms: don't leak address when
> > symbol not found")
> > 
> > Currently vsprintf for specifiers %p[SsB] relies on the behaviour of
> > kallsyms (sprint_symbol()) and prints the actual address if a symbol is
> > not found. Previous patch changes this behaviour so tha sprint_symbol()
> 
> tha->that
> 
> > returns an error if symbol not found. With this patch in place we can
> > print a sanitized message '<no-symbol>' instead of leaking the address.
> > 
> > Print '<no-symbol>' for printk specifier %s[sSB] if no symbol is found.
> 
> %s->%ps
> 
> > diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> []
> > @@ -460,6 +460,8 @@ char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
> >  extern __printf(2, 0)
> >  const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
> >  
> > +extern int string_is_no_symbol(const char *s);
> > +
> []
> > diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> > 
> > +#define PRINTK_NO_SYMBOL_STR "<no-symbol>"
> 
> "<symbol unavailable>" ?  "not found"?

<symbol not found>?

> []
> 
> > +int string_is_no_symbol(const char *s)
> > +{
> > +	return !!strstr(s, PRINTK_NO_SYMBOL_STR);
> > +}
> > +EXPORT_SYMBOL(string_is_no_symbol);
> 
> Why should string_is_no_symbol be exported?

I ummed and ahhed about this. By your comment I'm guessing I made the
wrong choice. The idea behind exporting the symbol was so users of
vsprintf could have a way to see if the symbol was found or not without
having to know what string was actually printed.

I'll remove it for v3 and implement your other suggestions.

thanks for the review,
Tobin.

  reply	other threads:[~2017-12-18  1:04 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-17 23:53 [PATCH 0/3] kallsyms: don't leak address Tobin C. Harding
2017-12-17 23:53 ` [PATCH 1/3] kallsyms: don't leak address when symbol not found Tobin C. Harding
2017-12-18  9:55   ` Felix Fietkau
2017-12-18 22:41     ` Tobin C. Harding
2017-12-18 23:43       ` Steven Rostedt
2017-12-19  0:24         ` Tobin C. Harding
2017-12-17 23:53 ` [PATCH 2/3] vsprintf: print <no-symbol> if " Tobin C. Harding
2017-12-18  0:04   ` Joe Perches
2017-12-18  1:04     ` Tobin C. Harding [this message]
2017-12-17 23:53 ` [PATCH 3/3] trace: print address " Tobin C. Harding
2017-12-18 16:49   ` Steven Rostedt
2017-12-18 21:16     ` Tobin C. Harding
2017-12-18 23:51       ` Steven Rostedt
2017-12-19  0:22         ` Tobin C. Harding
2017-12-19  3:00         ` Tobin C. Harding
2017-12-19  3:02           ` Tobin C. Harding
2017-12-19  3:37           ` Steven Rostedt
2017-12-19  4:20             ` Tobin C. Harding
2017-12-18 22:35     ` Tobin C. Harding
2017-12-19 23:19   ` kbuild test robot
2017-12-19 23:39   ` kbuild test robot
2017-12-18  5:31 ` [kernel-hardening] [PATCH 0/3] kallsyms: don't leak address Michael Ellerman
2017-12-18  6:00   ` Tobin C. Harding
2017-12-18  9:17     ` Tobin C. Harding

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=20171218010426.GY2191@eros \
    --to=me@tobin.cc \
    --cc=akpm@linux-foundation.org \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=joe@perches.com \
    --cc=keescook@chromium.org \
    --cc=kernel-hardening@lists.openwall.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tycho@tycho.ws \
    --cc=yamada.masahiro@socionext.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;
as well as URLs for NNTP newsgroup(s).