context: Use flatpak_parse_env_block()

No change in behavior, except minor wording of the error message.
This commit is contained in:
Dor Askayo
2023-09-18 00:18:48 +03:00
committed by Simon McVittie
parent 2804cd4116
commit 5a7ea354d3

View File

@@ -1243,37 +1243,22 @@ flatpak_context_parse_env_block (FlatpakContext *context,
gsize length,
GError **error)
{
const char *p = data;
gsize remaining = length;
g_auto(GStrv) env_vars = NULL;
int i;
/* env_block might not be \0-terminated */
while (remaining > 0)
env_vars = flatpak_parse_env_block (data, length, error);
if (env_vars == NULL)
return FALSE;
for (i = 0; env_vars[i] != NULL; i++)
{
size_t len = strnlen (p, remaining);
const char *equals;
g_autofree char *env_var = NULL;
g_autofree char *env_value = NULL;
g_auto(GStrv) split = g_strsplit (env_vars[i], "=", 2);
g_assert (len <= remaining);
g_assert (g_strv_length (split) == 2);
g_assert (split[0][0] != '\0');
equals = memchr (p, '=', len);
if (equals == NULL || equals == p)
return glnx_throw (error,
"Environment variable must be given in the form VARIABLE=VALUE, not %.*s", (int) len, p);
env_var = g_strndup (p, equals - p);
env_value = g_strndup (equals + 1, len - (equals - p) - 1);
flatpak_context_set_env_var (context, env_var, env_value);
p += len;
remaining -= len;
if (remaining > 0)
{
g_assert (*p == '\0');
p += 1;
remaining -= 1;
}
flatpak_context_set_env_var (context,
split[0], split[1]);
}
return TRUE;