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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 17 Aug 2010 13:46:40 +0800
From:	Américo Wang <xiyou.wangcong@...il.com>
To:	Mike Frysinger <vapier@...too.org>
Cc:	linux-kbuild@...r.kernel.org, Roman Zippel <zippel@...ux-m68k.org>,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] kconfig: fix warnings in fgets/fwrite usage

On Thu, Aug 12, 2010 at 01:56:19AM -0400, Mike Frysinger wrote:
>Add some helper functions that abort on failure, and change the fwrite
>and fget calls to use those.  This should kill off all the ugly gcc
>warnings that some distros emit about ignoring return values due to
>usage of warn_unused_result attributes.
>
>Signed-off-by: Mike Frysinger <vapier@...too.org>

Looks good to me,

Acked-by: WANG Cong <xiyou.wangcong@...il.com>


>---
> scripts/kconfig/conf.c     |    4 ++--
> scripts/kconfig/confdata.c |    2 +-
> scripts/kconfig/expr.c     |    2 +-
> scripts/kconfig/lkc.h      |   24 ++++++++++++++++++++++++
> 4 files changed, 28 insertions(+), 4 deletions(-)
>
>diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
>index 274f271..b382a39 100644
>--- a/scripts/kconfig/conf.c
>+++ b/scripts/kconfig/conf.c
>@@ -108,7 +108,7 @@ static int conf_askvalue(struct symbol *sym, const char *def)
> 		check_stdin();
> 	case oldaskconfig:
> 		fflush(stdout);
>-		fgets(line, 128, stdin);
>+		xfgets(line, 128, stdin);
> 		return 1;
> 	default:
> 		break;
>@@ -306,7 +306,7 @@ static int conf_choice(struct menu *menu)
> 			check_stdin();
> 		case oldaskconfig:
> 			fflush(stdout);
>-			fgets(line, 128, stdin);
>+			xfgets(line, 128, stdin);
> 			strip(line);
> 			if (line[0] == '?') {
> 				print_help(menu);
>diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
>index f81f263..7d9f271 100644
>--- a/scripts/kconfig/confdata.c
>+++ b/scripts/kconfig/confdata.c
>@@ -412,7 +412,7 @@ static void conf_write_string(bool headerfile, const char *name,
> 	while (1) {
> 		l = strcspn(str, "\"\\");
> 		if (l) {
>-			fwrite(str, l, 1, out);
>+			xfwrite(str, l, 1, out);
> 			str += l;
> 		}
> 		if (!*str)
>diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c
>index 8f18e37..330e7c0 100644
>--- a/scripts/kconfig/expr.c
>+++ b/scripts/kconfig/expr.c
>@@ -1087,7 +1087,7 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
> 
> static void expr_print_file_helper(void *data, struct symbol *sym, const char *str)
> {
>-	fwrite(str, strlen(str), 1, data);
>+	xfwrite(str, strlen(str), 1, data);
> }
> 
> void expr_fprint(struct expr *e, FILE *out)
>diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
>index 76db065..a3bd66a 100644
>--- a/scripts/kconfig/lkc.h
>+++ b/scripts/kconfig/lkc.h
>@@ -169,6 +169,30 @@ static inline bool sym_has_value(struct symbol *sym)
> 	return sym->flags & SYMBOL_DEF_USER ? true : false;
> }
> 
>+#define internal_error(fmt, args...) \
>+do { \
>+	fprintf(stderr, "%s:%s:%i: %s: " fmt "\n", __FILE__, \
>+		__func__, __LINE__, _("internal error"), ## args); \
>+	exit(1); \
>+} while (0)
>+
>+#define xfwrite(ptr, size, nmemb, stream) \
>+({ \
>+	size_t _nmemb = (nmemb); \
>+	size_t ret = fwrite(ptr, size, _nmemb, stream); \
>+	if (ret != _nmemb) \
>+		internal_error("%s", _("fwrite() came up short")); \
>+	ret; \
>+})
>+
>+#define xfgets(s, size, stream) \
>+({ \
>+	char *ret = fgets(s, size, stream); \
>+	if (ret == NULL) \
>+		internal_error("%s", _("fgets() came up short")); \
>+	ret; \
>+})
>+
> #ifdef __cplusplus
> }
> #endif
>-- 
>1.7.2
>
>--
>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/
--
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