-/* $OpenBSD: getent.c,v 1.9 2015/01/16 06:40:08 deraadt Exp $ */
+/* $OpenBSD: getent.c,v 1.10 2015/10/10 05:26:57 doug Exp $ */
/* $NetBSD: getent.c,v 1.7 2005/08/24 14:31:02 ginsbach Exp $ */
/*-
#include <sys/socket.h>
#include <ctype.h>
+#include <err.h>
#include <errno.h>
#include <grp.h>
#include <limits.h>
static struct getentdb {
const char *name;
int (*fn)(int, char *[]);
+ const char *pledge;
} databases[] = {
- { "ethers", ethers, },
- { "group", group, },
- { "hosts", hosts, },
- { "passwd", passwd, },
- { "protocols", protocols, },
- { "rpc", rpc, },
- { "services", services, },
- { "shells", shells, },
-
- { NULL, NULL, },
+ { "ethers", ethers, "stdio rpath" },
+ { "group", group, "stdio rpath" },
+ { "hosts", hosts, "stdio dns" },
+ { "passwd", passwd, "stdio rpath" },
+ { "protocols", protocols, "stdio rpath" },
+ { "rpc", rpc, "stdio rpath" },
+ { "services", services, "stdio rpath" },
+ { "shells", shells, "stdio rpath" },
+
+ { NULL, NULL, },
};
int
{
struct getentdb *curdb;
+ if (pledge("stdio dns rpath", NULL) == -1)
+ err(1, "pledge");
+
if (argc < 2)
usage();
for (curdb = databases; curdb->name != NULL; curdb++) {
if (strcmp(curdb->name, argv[1]) == 0) {
+ if (pledge(curdb->pledge, NULL) == -1)
+ err(1, "pledge");
+
exit(curdb->fn(argc, argv));
break;
}