GUACAMOLE-1174: Create function for appending endpoint params, fix endpoint params overwriting.

This commit is contained in:
Yaroslav Nikonorov 2020-10-20 12:35:25 +03:00
parent 6b58e2e5a9
commit 79239e3be0

View File

@ -89,6 +89,23 @@ int guac_kubernetes_escape_url_component(char* output, int length,
} }
int guac_kubernetes_append_endpoint_param(char* buffer, int length,
const char* param_name, const char* param_value) {
char escaped_param_value[GUAC_KUBERNETES_MAX_ENDPOINT_LENGTH];
/* Escape value */
if (guac_kubernetes_escape_url_component(escaped_param_value,
sizeof(escaped_param_value), param_value))
return 1;
int written;
written = snprintf(buffer + strlen(buffer), length - strlen(buffer),
"%s=%s&", param_name, escaped_param_value);
return (written < 0 || written >= length);
}
int guac_kubernetes_endpoint_uri(char* buffer, int length, int guac_kubernetes_endpoint_uri(char* buffer, int length,
const char* kubernetes_namespace, const char* kubernetes_pod, const char* kubernetes_namespace, const char* kubernetes_pod,
const char* kubernetes_container, const char* exec_command) { const char* kubernetes_container, const char* exec_command) {
@ -124,31 +141,20 @@ int guac_kubernetes_endpoint_uri(char* buffer, int length,
return 1; return 1;
/* Generate endpoint params */ /* Generate endpoint params */
char endpoint_params[GUAC_KUBERNETES_MAX_ENDPOINT_LENGTH]=""; char endpoint_params[GUAC_KUBERNETES_MAX_ENDPOINT_LENGTH];
endpoint_params[0] = 0;
if (exec_command != NULL) { if (exec_command != NULL) {
/* Escape exec command */ /* Append exec command param */
if (guac_kubernetes_escape_url_component(escaped_exec_command, if (guac_kubernetes_append_endpoint_param(endpoint_params,
sizeof(escaped_exec_command), exec_command)) sizeof(endpoint_params), "command", exec_command))
return 1;
written = snprintf(endpoint_params, sizeof(endpoint_params),
"command=%s&", escaped_exec_command);
if (written < 0 || written >= sizeof(endpoint_params))
return 1; return 1;
} }
if (kubernetes_container != NULL) { if (kubernetes_container != NULL) {
/* Escape container name */ /* Append kubernetes container param */
if (guac_kubernetes_escape_url_component(escaped_container, if (guac_kubernetes_append_endpoint_param(endpoint_params,
sizeof(escaped_container), kubernetes_container)) sizeof(endpoint_params), "container", kubernetes_container))
return 1;
written = snprintf(endpoint_params, sizeof(endpoint_params),
"container=%s&", escaped_container);
if (written < 0 || written >= sizeof(endpoint_params))
return 1; return 1;
} }