X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Ffileio.c;h=c7b2cd85b94b8cc0eacc452fb70c5e4ed4f3e0df;hb=7cfa80f07e94c3e48703d145ef03a73dd6e7b983;hp=0d3f2e90c75d639184307d97cd4101dbb5fa1a84;hpb=c8a202b7d47f9d6bba3100a208abdadfc383499e;p=elogind.git diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 0d3f2e90c..c7b2cd85b 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -294,7 +294,7 @@ static int parse_env_file_internal( state = KEY; last_key_whitespace = (size_t) -1; - if (!greedy_realloc((void**) &key, &key_alloc, n_key+2)) { + if (!GREEDY_REALLOC(key, key_alloc, n_key+2)) { r = -ENOMEM; goto fail; } @@ -317,7 +317,7 @@ static int parse_env_file_internal( else if (last_key_whitespace == (size_t) -1) last_key_whitespace = n_key; - if (!greedy_realloc((void**) &key, &key_alloc, n_key+2)) { + if (!GREEDY_REALLOC(key, key_alloc, n_key+2)) { r = -ENOMEM; goto fail; } @@ -357,7 +357,7 @@ static int parse_env_file_internal( else if (!strchr(WHITESPACE, c)) { state = VALUE; - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -402,7 +402,7 @@ static int parse_env_file_internal( else if (last_value_whitespace == (size_t) -1) last_value_whitespace = n_value; - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -417,7 +417,7 @@ static int parse_env_file_internal( if (!strchr(newline, c)) { /* Escaped newlines we eat up entirely */ - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -432,7 +432,7 @@ static int parse_env_file_internal( else if (c == '\\') state = SINGLE_QUOTE_VALUE_ESCAPE; else { - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -446,7 +446,7 @@ static int parse_env_file_internal( state = SINGLE_QUOTE_VALUE; if (!strchr(newline, c)) { - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -461,7 +461,7 @@ static int parse_env_file_internal( else if (c == '\\') state = DOUBLE_QUOTE_VALUE_ESCAPE; else { - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -475,7 +475,7 @@ static int parse_env_file_internal( state = DOUBLE_QUOTE_VALUE; if (!strchr(newline, c)) { - if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { + if (!GREEDY_REALLOC(value, value_alloc, n_value+2)) { r = -ENOMEM; goto fail; } @@ -598,15 +598,18 @@ static int load_env_file_push(const char *filename, unsigned line, int r; if (!utf8_is_valid(key)) { + _cleanup_free_ char *t = utf8_escape_invalid(key); + log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", - filename, line, key); + filename, line, t); return -EINVAL; } if (value && !utf8_is_valid(value)) { - /* FIXME: filter UTF-8 */ + _cleanup_free_ char *t = utf8_escape_invalid(value); + log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", - filename, line, key, value); + filename, line, key, t); return -EINVAL; } @@ -614,11 +617,9 @@ static int load_env_file_push(const char *filename, unsigned line, if (!p) return -ENOMEM; - r = strv_push(m, p); - if (r < 0) { - free(p); + r = strv_consume(m, p); + if (r < 0) return r; - } free(value); return 0;