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';