lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120822082015.GA6250@shutemov.name>
Date:	Wed, 22 Aug 2012 11:20:15 +0300
From:	"Kirill A. Shutemov" <kirill@...temov.name>
To:	Namhyung Kim <namhyung@...nel.org>
Cc:	Steven Rostedt <rostedt@...dmis.org>,
	Arnaldo Carvalho de Melo <acme@...stprotocols.net>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Peter Zijlstra <a.p.zijlstra@...llo.nl>,
	Ingo Molnar <mingo@...nel.org>,
	LKML <linux-kernel@...r.kernel.org>,
	Namhyung Kim <namhyung.kim@....com>
Subject: Re: [PATCH 4/4] tools lib traceevent: Fix strerror_r() use in
 pevent_strerror

On Wed, Aug 22, 2012 at 04:00:31PM +0900, Namhyung Kim wrote:
> From: Namhyung Kim <namhyung.kim@....com>
> 
> glibc-2.16 starts to mark the function with attribute
> warn_unused_result so that it can cause a build warning.
> 
> Since GNU version of strerror_r() can return a pointer to a string
> without setting @buf, check the return value and copy/truncate it to
> our buffer if needed.
> 
> Cc: Fredereic Weisbecker <fweisbec@...il.com>
> Cc: Steven Rostedt <rostedt@...dmis.org>
> Cc: Kirill A. Shutemov <kirill@...temov.name>
> Signed-off-by: Namhyung Kim <namhyung@...nel.org>

Acked-by: Kirill A. Shutemov <kirill@...temov.name>

> ---
>  tools/lib/traceevent/event-parse.c | 7 ++++++-
>  tools/lib/traceevent/event-utils.h | 6 ++++++
>  2 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
> index 1373e4cf109e..f978c59f67bf 100644
> --- a/tools/lib/traceevent/event-parse.c
> +++ b/tools/lib/traceevent/event-parse.c
> @@ -4809,7 +4809,12 @@ int pevent_strerror(struct pevent *pevent, enum pevent_errno errnum,
>  	const char *msg;
>  
>  	if (errnum >= 0) {
> -		strerror_r(errnum, buf, buflen);
> +		msg = strerror_r(errnum, buf, buflen);
> +		if (msg != buf) {
> +			size_t len = strlen(msg);
> +			char *c = mempcpy(buf, msg, min(buflen-1, len));
> +			*c = '\0';
> +		}
>  		return 0;
>  	}
>  
> diff --git a/tools/lib/traceevent/event-utils.h b/tools/lib/traceevent/event-utils.h
> index 08296383d1e6..bc075006966e 100644
> --- a/tools/lib/traceevent/event-utils.h
> +++ b/tools/lib/traceevent/event-utils.h
> @@ -39,6 +39,12 @@ void __vdie(const char *fmt, ...);
>  void __vwarning(const char *fmt, ...);
>  void __vpr_stat(const char *fmt, ...);
>  
> +#define min(x, y) ({				\
> +	typeof(x) _min1 = (x);			\
> +	typeof(y) _min2 = (y);			\
> +	(void) (&_min1 == &_min2);		\
> +	_min1 < _min2 ? _min1 : _min2; })
> +
>  static inline char *strim(char *string)
>  {
>  	char *ret;
> -- 
> 1.7.11.4
> 

-- 
 Kirill A. Shutemov
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ