duckduckgo: fix an abort "rpath" on OpenBSD - frontends - front-ends for some sites (experiment)
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit e0eb56d566e98aa2c886de31b9df6c7e6636b00a
(DIR) parent bb2aaedc735f352dc4f90f427f22b94bd906d917
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Thu, 3 Sep 2020 17:05:02 +0200
duckduckgo: fix an abort "rpath" on OpenBSD
Diffstat:
M duckduckgo/cli.c | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/duckduckgo/cli.c b/duckduckgo/cli.c
@@ -2,6 +2,7 @@
#include <ctype.h>
#include <err.h>
+#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
@@ -10,6 +11,7 @@
#include <wchar.h>
#include "duckduckgo.h"
+#include "https.h"
#include "util.h"
#define OUT(s) fputs((s), stdout)
@@ -34,15 +36,29 @@ main(int argc, char *argv[])
setlocale(LC_CTYPE, "");
- if (pledge("stdio", NULL) == -1)
- err(1, "pledge");
+ if (pledge("stdio dns inet rpath unveil", NULL) == -1) {
+ fprintf(stderr, "pledge: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (unveil(TLS_CA_CERT_FILE, "r") == -1) {
+ fprintf(stderr, "unveil: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (unveil(NULL, NULL) == -1) {
+ fprintf(stderr, "unveil: %s\n", strerror(errno));
+ exit(1);
+ }
if (argc != 2) {
fprintf(stderr, "usage: %s <search>\n", argv[0]);
exit(1);
}
- if ((results = duckduckgo_search(argv[1]))) {
+ results = duckduckgo_search(argv[1]);
+ if (pledge("stdio", NULL) == -1)
+ err(1, "pledge");
+
+ if (results) {
for (i = 0; i < results->nitems; i++) {
result = &(results->items[i]);