r = sd_bus_message_read_strv(message, &plus);
if (r < 0)
return r;
+
+ if (strv_length(plus) > ENVIRONMENT_ASSIGNMENTS_MAX)
+ return sd_bus_error_set(reterr_error, SD_BUS_ERROR_LIMITS_EXCEEDED,
+ "Too many environment assignments in a single query.");
if (!strv_env_is_valid(plus))
return sd_bus_error_set(reterr_error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment assignments");
if (r < 0)
return r;
+ if (strv_length(minus) > ENVIRONMENT_ASSIGNMENTS_MAX)
+ return sd_bus_error_set(reterr_error, SD_BUS_ERROR_LIMITS_EXCEEDED,
+ "Too many environment variable names in a single query.");
if (!strv_env_name_or_assignment_is_valid(minus))
return sd_bus_error_set(reterr_error, SD_BUS_ERROR_INVALID_ARGS,
"Invalid environment variable names or assignments");
if (r < 0)
return r;
+ if (strv_length(plus) > ENVIRONMENT_ASSIGNMENTS_MAX || strv_length(minus) > ENVIRONMENT_ASSIGNMENTS_MAX)
+ return sd_bus_error_set(reterr_error, SD_BUS_ERROR_LIMITS_EXCEEDED,
+ "Too many environment variable names or assignments in a single query.");
if (!strv_env_name_or_assignment_is_valid(minus))
return sd_bus_error_set(reterr_error, SD_BUS_ERROR_INVALID_ARGS,
"Invalid environment variable names or assignments");
r = sd_bus_message_read_strv(message, &env);
if (r < 0)
return r;
+
+ if (strv_length(env) > ENVIRONMENT_ASSIGNMENTS_MAX)
+ return sd_bus_error_set(error, SD_BUS_ERROR_LIMITS_EXCEEDED,
+ "Too many environment assignments in a single query.");
if (!strv_env_is_valid(env))
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment assignments");