Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sbin/cgdconfig cgdconfig(8): Fail more gracefully than SIGSE...
details: https://anonhg.NetBSD.org/src/rev/0696f63a85b1
branches: trunk
changeset: 379739:0696f63a85b1
user: riastradh <riastradh%NetBSD.org@localhost>
date: Wed Jun 16 23:22:08 2021 +0000
description:
cgdconfig(8): Fail more gracefully than SIGSEGV if shell_cmd fails.
diffstat:
sbin/cgdconfig/cgdconfig.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diffs (36 lines):
diff -r 671df849aec0 -r 0696f63a85b1 sbin/cgdconfig/cgdconfig.c
--- a/sbin/cgdconfig/cgdconfig.c Wed Jun 16 21:53:51 2021 +0000
+++ b/sbin/cgdconfig/cgdconfig.c Wed Jun 16 23:22:08 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cgdconfig.c,v 1.51 2021/04/18 19:56:09 maya Exp $ */
+/* $NetBSD: cgdconfig.c,v 1.52 2021/06/16 23:22:08 riastradh Exp $ */
/*-
* Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
#ifndef lint
__COPYRIGHT("@(#) Copyright (c) 2002, 2003\
The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: cgdconfig.c,v 1.51 2021/04/18 19:56:09 maya Exp $");
+__RCSID("$NetBSD: cgdconfig.c,v 1.52 2021/06/16 23:22:08 riastradh Exp $");
#endif
#include <err.h>
@@ -460,10 +460,14 @@ getkey_shell_cmd(const char *target, str
{
FILE *f;
bits_t *ret;
+ int status;
- f = popen(string_tocharstar(kg->kg_cmd), "r");
- ret = bits_fget(f, keylen);
- pclose(f);
+ if ((f = popen(string_tocharstar(kg->kg_cmd), "r")) == NULL)
+ errx(1, "command failed");
+ if ((ret = bits_fget(f, keylen)) == NULL)
+ errx(1, "command output too short");
+ if ((status = pclose(f)) != 0)
+ err(1, "command failed with status %d", status);
return ret;
}
Home |
Main Index |
Thread Index |
Old Index