qrexec: deny spaces in service domain name

Fixes QubesOS/qubes-issues#1877
pull/20/head
Marek Marczykowski-Górecki 8 years ago
parent 3acfb8e4b3
commit ad28f4df62
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

@ -624,7 +624,7 @@ static int find_policy_pending_slot() {
return -1;
}
static void sanitize_name(char * untrusted_s_signed)
static void sanitize_name(char * untrusted_s_signed, char *extra_allowed_chars)
{
unsigned char * untrusted_s;
for (untrusted_s=(unsigned char*)untrusted_s_signed; *untrusted_s; untrusted_s++) {
@ -634,7 +634,12 @@ static void sanitize_name(char * untrusted_s_signed)
continue;
if (*untrusted_s >= '0' && *untrusted_s <= '9')
continue;
if (*untrusted_s == '$' || *untrusted_s == '_' || *untrusted_s == '-' || *untrusted_s == '.' || *untrusted_s == ' ')
if (*untrusted_s == '$' ||
*untrusted_s == '_' ||
*untrusted_s == '-' ||
*untrusted_s == '.')
continue;
if (extra_allowed_chars && strchr(extra_allowed_chars, *untrusted_s))
continue;
*untrusted_s = '_';
}
@ -661,9 +666,9 @@ static void handle_execute_service(void)
ENSURE_NULL_TERMINATED(untrusted_params.service_name);
ENSURE_NULL_TERMINATED(untrusted_params.target_domain);
ENSURE_NULL_TERMINATED(untrusted_params.request_id.ident);
sanitize_name(untrusted_params.service_name);
sanitize_name(untrusted_params.target_domain);
sanitize_name(untrusted_params.request_id.ident);
sanitize_name(untrusted_params.service_name, "");
sanitize_name(untrusted_params.target_domain, "");
sanitize_name(untrusted_params.request_id.ident, " ");
params = untrusted_params;
/* sanitize end */

Loading…
Cancel
Save