39 lines
1.2 KiB
Diff
39 lines
1.2 KiB
Diff
Index: sbin/dhclient/dhclient.c
|
|
===================================================================
|
|
--- sbin/dhclient/dhclient.c (revision 302284)
|
|
+++ sbin/dhclient/dhclient.c (working copy)
|
|
@@ -2277,6 +2277,17 @@ script_set_env(struct client_state *clie
|
|
{
|
|
int i, j, namelen;
|
|
|
|
+ /* No `` or $() command substitution allowed in environment values! */
|
|
+ for (j=0; j < strlen(value); j++)
|
|
+ switch (value[j]) {
|
|
+ case '`':
|
|
+ case '$':
|
|
+ warning("illegal character (%c) in value '%s'",
|
|
+ value[j], value);
|
|
+ /* Ignore this option */
|
|
+ return;
|
|
+ }
|
|
+
|
|
namelen = strlen(name);
|
|
|
|
for (i = 0; client->scriptEnv[i]; i++)
|
|
@@ -2313,16 +2324,6 @@ script_set_env(struct client_state *clie
|
|
strlen(value) + 1);
|
|
if (client->scriptEnv[i] == NULL)
|
|
error("script_set_env: no memory for variable assignment");
|
|
-
|
|
- /* No `` or $() command substitution allowed in environment values! */
|
|
- for (j=0; j < strlen(value); j++)
|
|
- switch (value[j]) {
|
|
- case '`':
|
|
- case '$':
|
|
- error("illegal character (%c) in value '%s'", value[j],
|
|
- value);
|
|
- /* not reached */
|
|
- }
|
|
snprintf(client->scriptEnv[i], strlen(prefix) + strlen(name) +
|
|
1 + strlen(value) + 1, "%s%s=%s", prefix, name, value);
|
|
}
|