chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core/execute: report invalid environment variables from files
[elogind.git]
/
src
/
shared
/
fileio.c
diff --git
a/src/shared/fileio.c
b/src/shared/fileio.c
index 3f242edc600a1b0a864820639b3073dbfb309bb4..4390726a9388b19f40d0353b7f5c6687540a0c9d 100644
(file)
--- a/
src/shared/fileio.c
+++ b/
src/shared/fileio.c
@@
-184,7
+184,6
@@
static int parse_env_file_internal(
enum {
PRE_KEY,
KEY,
enum {
PRE_KEY,
KEY,
- PRE_EQUAL,
PRE_VALUE,
VALUE,
VALUE_ESCAPE,
PRE_VALUE,
VALUE,
VALUE_ESCAPE,
@@
-209,9
+208,7
@@
static int parse_env_file_internal(
switch (state) {
case PRE_KEY:
switch (state) {
case PRE_KEY:
- if (startswith(p, "export "))
- p+=6;
- else if (strchr(COMMENTS, c))
+ if (strchr(COMMENTS, c))
state = COMMENT;
else if (!strchr(WHITESPACE, c)) {
state = KEY;
state = COMMENT;
else if (!strchr(WHITESPACE, c)) {
state = KEY;
@@
-228,9
+225,7
@@
static int parse_env_file_internal(
if (strchr(newline, c)) {
state = PRE_KEY;
n_key = 0;
if (strchr(newline, c)) {
state = PRE_KEY;
n_key = 0;
- } else if (strchr(WHITESPACE, c))
- state = PRE_EQUAL;
- else if (c == '=')
+ } else if (c == '=')
state = PRE_VALUE;
else {
if (!greedy_realloc((void**) &key, &key_alloc, n_key+2)) {
state = PRE_VALUE;
else {
if (!greedy_realloc((void**) &key, &key_alloc, n_key+2)) {
@@
-243,19
+238,6
@@
static int parse_env_file_internal(
break;
break;
- case PRE_EQUAL:
- if (strchr(newline, c)) {
- state = PRE_KEY;
- n_key = 0;
- } else if (c == '=')
- state = PRE_VALUE;
- else if (!strchr(WHITESPACE, c)) {
- n_key = 0;
- state = COMMENT;
- }
-
- break;
-
case PRE_VALUE:
if (strchr(newline, c) || strchr(COMMENTS, c)) {
state = PRE_KEY;
case PRE_VALUE:
if (strchr(newline, c) || strchr(COMMENTS, c)) {
state = PRE_KEY;
@@
-264,6
+246,10
@@
static int parse_env_file_internal(
if (value)
value[n_value] = 0;
if (value)
value[n_value] = 0;
+ /* strip trailing whitespace from key */
+ while(strchr(WHITESPACE, key[--n_key]))
+ key[n_key]=0;
+
r = push(key, value, userdata);
if (r < 0)
goto fail;
r = push(key, value, userdata);
if (r < 0)
goto fail;
@@
-302,6
+288,10
@@
static int parse_env_file_internal(
if (last_whitespace != (size_t) -1)
value[last_whitespace] = 0;
if (last_whitespace != (size_t) -1)
value[last_whitespace] = 0;
+ /* strip trailing whitespace from key */
+ while(strchr(WHITESPACE, key[--n_key]))
+ key[n_key]=0;
+
r = push(key, value, userdata);
if (r < 0)
goto fail;
r = push(key, value, userdata);
if (r < 0)
goto fail;
@@
-426,6
+416,10
@@
static int parse_env_file_internal(
if (value)
value[n_value] = 0;
if (value)
value[n_value] = 0;
+ /* strip trailing whitespace from key */
+ while(strchr(WHITESPACE, key[--n_key]))
+ key[n_key]=0;
+
r = push(key, value, userdata);
if (r < 0)
goto fail;
r = push(key, value, userdata);
if (r < 0)
goto fail;