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) ...@@ -1037,6 +1037,39 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return 0; 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) static void nxagentParseSingleOption(char *name, char *value)
{ {
int size, argc; int size, argc;
...@@ -1048,6 +1081,8 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1048,6 +1081,8 @@ static void nxagentParseSingleOption(char *name, char *value)
validateString(name), validateString(value)); validateString(name), validateString(value));
#endif #endif
URLDecodeInPlace(value);
if (!strcmp(name, "kbtype") || if (!strcmp(name, "kbtype") ||
!strcmp(name, "keyboard") || !strcmp(name, "keyboard") ||
!strcmp(name, "id") || !strcmp(name, "id") ||
......
...@@ -480,6 +480,11 @@ As <proxy-port> you can pick an arbitrary (unused) TCP port or Unix ...@@ -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 socket file path. This is the port / socket that you have to connect to
with the \fBnxproxy\fR application. with the \fBnxproxy\fR application.
.PP .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 Available \fBnxagent\fR options (as an addition to nx/nx options supported
by nxcomp already): by nxcomp already):
.TP 8 .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