Commit 30a96273 authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Args.c: allow options to contain URL encoded characters

Same as in nxcomp's option handling. We really only need it for "," (%2C) and "=" (%3D), currently, but it can handle all encoded characters.
parent f8e20d05
......@@ -1037,6 +1037,39 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return 0;
}
/* copy from nxcomp's Loop.cpp */
static int
hexval(char c) {
if ((c >= '0') && (c <= '9'))
return c - '0';
if ((c >= 'a') && (c <= 'f'))
return c - 'a' + 10;
if ((c >= 'A') && (c <= 'F'))
return c - 'A' + 10;
return -1;
}
static void
URLDecodeInPlace(char *str)
{
if (str) {
char *to = str;
while (str[0])
{
if ((str[0] == '%') &&
(hexval(str[1]) >= 0) &&
(hexval(str[2]) >= 0))
{
*(to++) = hexval(str[1]) * 16 + hexval(str[2]);
str += 3;
}
else
*(to++) = *(str++);
}
*to = '\0';
}
}
static void nxagentParseSingleOption(char *name, char *value)
{
int size, argc;
......@@ -1048,6 +1081,8 @@ static void nxagentParseSingleOption(char *name, char *value)
validateString(name), validateString(value));
#endif
URLDecodeInPlace(value);
if (!strcmp(name, "kbtype") ||
!strcmp(name, "keyboard") ||
!strcmp(name, "id") ||
......
......@@ -480,6 +480,11 @@ As <proxy-port> you can pick an arbitrary (unused) TCP port or Unix
socket file path. This is the port / socket that you have to connect to
with the \fBnxproxy\fR application.
.PP
The right hand side of an option (the part following the "=" character)
can include URL encoded characters. It is required to URL encode at
least "," (as %2D) and "=" (as %3D) to avoid wrong parsing of the
options string.
.PP
Available \fBnxagent\fR options (as an addition to nx/nx options supported
by nxcomp already):
.TP 8
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment