chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Properly report invalid quoted strings
[elogind.git]
/
src
/
shared
/
util.c
diff --git
a/src/shared/util.c
b/src/shared/util.c
index cb9687cb02085703fa4416d083625abacc65c3d9..76cee19261e67a8c8aaca35107374fa366f1c7e6 100644
(file)
--- a/
src/shared/util.c
+++ b/
src/shared/util.c
@@
-3163,12
+3163,13
@@
fail:
}
char **replace_env_argv(char **argv, char **env) {
}
char **replace_env_argv(char **argv, char **env) {
- char **r, **i;
+ char **r
et
, **i;
unsigned k = 0, l = 0;
l = strv_length(argv);
unsigned k = 0, l = 0;
l = strv_length(argv);
- if (!(r = new(char*, l+1)))
+ ret = new(char*, l+1);
+ if (!ret)
return NULL;
STRV_FOREACH(i, argv) {
return NULL;
STRV_FOREACH(i, argv) {
@@
-3181,10
+3182,12
@@
char **replace_env_argv(char **argv, char **env) {
e = strv_env_get(env, *i+1);
if (e) {
e = strv_env_get(env, *i+1);
if (e) {
+ int r;
- if (!(m = strv_split_quoted(e))) {
- r[k] = NULL;
- strv_free(r);
+ r = strv_split_quoted(&m, e);
+ if (r < 0) {
+ ret[k] = NULL;
+ strv_free(ret);
return NULL;
}
} else
return NULL;
}
} else
@@
-3193,16
+3196,17
@@
char **replace_env_argv(char **argv, char **env) {
q = strv_length(m);
l = l + q - 1;
q = strv_length(m);
l = l + q - 1;
- if (!(w = realloc(r, sizeof(char*) * (l+1)))) {
- r[k] = NULL;
- strv_free(r);
+ w = realloc(ret, sizeof(char*) * (l+1));
+ if (!w) {
+ ret[k] = NULL;
+ strv_free(ret);
strv_free(m);
return NULL;
}
strv_free(m);
return NULL;
}
- r = w;
+ r
et
= w;
if (m) {
if (m) {
- memcpy(r + k, m, q * sizeof(char*));
+ memcpy(r
et
+ k, m, q * sizeof(char*));
free(m);
}
free(m);
}
@@
-3211,14
+3215,16
@@
char **replace_env_argv(char **argv, char **env) {
}
/* If ${FOO} appears as part of a word, replace it by the variable as-is */
}
/* If ${FOO} appears as part of a word, replace it by the variable as-is */
- if (!(r[k++] = replace_env(*i, env))) {
- strv_free(r);
+ ret[k] = replace_env(*i, env);
+ if (!ret[k]) {
+ strv_free(ret);
return NULL;
}
return NULL;
}
+ k++;
}
}
- r[k] = NULL;
- return r;
+ r
et
[k] = NULL;
+ return r
et
;
}
int fd_columns(int fd) {
}
int fd_columns(int fd) {