So I ended up in doas again, this time with the CFLAGS I use for most of
my other projects. This popped up a few new not very exciting warnings.
Diff below compiles clean with both clang and gcc on amd64.

Worth doing?

martijn@

Index: Makefile
===================================================================
RCS file: /cvs/src/usr.bin/doas/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- Makefile    3 Jul 2017 22:21:47 -0000       1.3
+++ Makefile    18 Dec 2020 21:18:51 -0000
@@ -9,7 +9,11 @@ BINOWN= root
 BINMODE=4555
 
 CFLAGS+= -I${.CURDIR}
-COPTS+=        -Wall
+CFLAGS+= -Wall
+CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes
+CFLAGS+= -Wmissing-declarations
+CFLAGS+= -Wshadow -Wpointer-arith -Wcast-qual
+CFLAGS+= -Wsign-compare
 YFLAGS=
 
 .include <bsd.prog.mk>
Index: doas.c
===================================================================
RCS file: /cvs/src/usr.bin/doas/doas.c,v
retrieving revision 1.84
diff -u -p -r1.84 doas.c
--- doas.c      9 Oct 2020 07:43:38 -0000       1.84
+++ doas.c      18 Dec 2020 21:18:51 -0000
@@ -94,7 +94,7 @@ parsegid(const char *s, gid_t *gid)
 
 static int
 match(uid_t uid, gid_t *groups, int ngroups, uid_t target, const char *cmd,
-    const char **cmdargs, struct rule *r)
+    const char * const*cmdargs, struct rule *r)
 {
        int i;
 
@@ -134,7 +134,7 @@ match(uid_t uid, gid_t *groups, int ngro
 
 static int
 permit(uid_t uid, gid_t *groups, int ngroups, const struct rule **lastr,
-    uid_t target, const char *cmd, const char **cmdargs)
+    uid_t target, const char *cmd, const char * const*cmdargs)
 {
        int i;
 
@@ -188,7 +188,7 @@ checkconfig(const char *confpath, int ar
                exit(0);
 
        if (permit(uid, groups, ngroups, &rule, target, argv[0],
-           (const char **)argv + 1)) {
+           (const char * const*)argv + 1)) {
                printf("permit%s\n", (rule->options & NOPASS) ? " nopass" : "");
                exit(0);
        } else {
@@ -244,7 +244,7 @@ good:
        }
 }
 
-int
+static int
 unveilcommands(const char *ipath, const char *cmd)
 {
        char *path = NULL, *p;
@@ -271,7 +271,7 @@ unveilcommands(const char *ipath, const 
 
                if (cp) {
                        int r = snprintf(buf, sizeof buf, "%s/%s", cp, cmd);
-                       if (r >= 0 && r < sizeof buf) {
+                       if (r >= 0 && (size_t)r < sizeof buf) {
                                if (unveil(buf, "x") != -1)
                                        unveils++;
                        }
@@ -394,7 +394,7 @@ main(int argc, char **argv)
 
        cmd = argv[0];
        if (!permit(uid, groups, ngroups, &rule, target, cmd,
-           (const char **)argv + 1)) {
+           (const char * const*)argv + 1)) {
                syslog(LOG_AUTHPRIV | LOG_NOTICE,
                    "command not permitted for %s: %s", mypw->pw_name, cmdline);
                errc(1, EPERM, NULL);
Index: env.c
===================================================================
RCS file: /cvs/src/usr.bin/doas/env.c,v
retrieving revision 1.10
diff -u -p -r1.10 env.c
--- env.c       7 Jul 2019 19:21:28 -0000       1.10
+++ env.c       18 Dec 2020 21:18:51 -0000
@@ -32,8 +32,8 @@ const char *formerpath;
 
 struct envnode {
        RB_ENTRY(envnode) node;
-       const char *key;
-       const char *value;
+       char *key;
+       char *value;
 };
 
 struct env {
Index: parse.y
===================================================================
RCS file: /cvs/src/usr.bin/doas/parse.y,v
retrieving revision 1.28
diff -u -p -r1.28 parse.y
--- parse.y     9 Oct 2020 07:43:38 -0000       1.28
+++ parse.y     18 Dec 2020 21:18:51 -0000
@@ -56,7 +56,7 @@ static void yyerror(const char *, ...);
 static int yylex(void);
 
 static size_t
-arraylen(const char **arr)
+arraylen(const char * const*arr)
 {
        size_t cnt = 0;
 
@@ -222,7 +222,8 @@ int
 yylex(void)
 {
        char buf[1024], *ebuf, *p, *str;
-       int i, c, quotes = 0, escape = 0, qpos = -1, nonkw = 0;
+       int c, quotes = 0, escape = 0, qpos = -1, nonkw = 0;
+       size_t i;
 
        p = buf;
        ebuf = buf + sizeof(buf);


Reply via email to