fix promises buffer size and small cleanup - geomyidae - A small C-based gopherd.
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/
Log
Files
Refs
Tags
README
LICENSE
---
commit b6cd8dc7652f6a9cc6e74bf24b0df27be2a47d32
parent 25298ac2cb69c28100c9cc5aa1fde245e23743f5
Author: Hiltjo Posthuma 
Date:   Sat, 23 Jun 2018 11:32:25 +0200

fix promises buffer size and small cleanup

with feedback from quinq

Signed-off-by: Christoph Lohmann <20h@r-36.net>

Diffstat:
  M main.c                              |      20 ++++++++++++--------

1 file changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/main.c b/main.c
@@ -539,11 +539,14 @@ main(int argc, char *argv[])
         cltlen = sizeof(clt);
 
 #ifdef __OpenBSD__
-        char promises[30];
-        snprintf(promises, sizeof(promises), "rpath inet stdio proc exec %s %s",
+        char *promises = (char[35]){};
+        snprintf(promises, 35, "rpath inet stdio proc exec %s %s",
                 revlookup ? "dns"  : "",
                 dofork    ? "tty"  : "");
-        pledge(promises, NULL);
+        if (pledge(promises, NULL) == -1) {
+                perror("pledge");
+                exit(1);
+        }
 #endif /* __OpenBSD__ */
 
         while (1) {
@@ -585,11 +588,12 @@ main(int argc, char *argv[])
                         signal(SIGALRM, SIG_DFL);
 
 #ifdef __OpenBSD__
-                        char client_promises[25];
-                        snprintf(client_promises, sizeof(client_promises),
-                                        "rpath inet stdio %s",
-                                        nocgi ? "" : "proc exec" );
-                        pledge(client_promises, NULL);
+                        promises = nocgi ? "rpath inet stdio" :
+                                           "rpath inet stdio proc exec";
+                        if (pledge(promises, NULL) == -1) {
+                                perror("pledge");
+                                exit(1);
+                        }
 #endif /* __OpenBSD__ */
 
                         handlerequest(sock, base, ohost, sport, clienth,