No functional or user-visible changes here.
On that note, where did the "1024" (1023-char) come from? Is there
anyone who has environment variables whose name goes near 1023 chars?

Index: usr.bin/doas/env.c
===================================================================
RCS file: /cvs/src/usr.bin/doas/env.c,v
retrieving revision 1.5
diff -u -p -u -r1.5 env.c
--- usr.bin/doas/env.c  15 Sep 2016 00:58:23 -0000      1.5
+++ usr.bin/doas/env.c  5 Apr 2017 05:36:39 -0000
@@ -27,6 +27,8 @@
 
 #include "doas.h"
 
+#define VARNAME_MAX 1023
+
 struct envnode {
        RB_ENTRY(envnode) node;
        const char *key;
@@ -87,7 +89,7 @@ createenv(struct rule *rule)
                        struct envnode *node;
                        const char *e, *eq;
                        size_t len;
-                       char name[1024];
+                       char name[VARNAME_MAX + 1];
 
                        e = environ[i];
 
@@ -95,7 +97,7 @@ createenv(struct rule *rule)
                        if ((eq = strchr(e, '=')) == NULL || eq == e)
                                continue;
                        len = eq - e;
-                       if (len > sizeof(name) - 1)
+                       if (len > VARNAME_MAX)
                                continue;
                        memcpy(name, e, len);
                        name[len] = '\0';
@@ -139,7 +141,7 @@ fillenv(struct env *env, const char **en
        struct envnode *node, key;
        const char *e, *eq;
        const char *val;
-       char name[1024];
+       char name[VARNAME_MAX + 1];
        u_int i;
        size_t len;
 
@@ -151,7 +153,7 @@ fillenv(struct env *env, const char **en
                        len = strlen(e);
                else
                        len = eq - e;
-               if (len > sizeof(name) - 1)
+               if (len > VARNAME_MAX)
                        continue;
                memcpy(name, e, len);
                name[len] = '\0';

Reply via email to