support UTF-8 --client-config-dir
PATCH 1/1 support UTF-8 --client-config-dir
If a common name (or user name, when used in conjunction with --username-as-common-name) contains UTF-8 encoded characters their octets get replaced by underscores. This becomes problematic when user "Müller" and "Möller" need to have a CCD files and both would be receive options from the file "M__ller". The situation is even worse for non-latin alphabets, where CCD file names consist of underscores entirely.
This patch removes that limitation and also allows the file names to contain any punctuation characters besided the resevered ones.
--- src/openvpn/buffer.c | 10 ++++++++++ src/openvpn/buffer.h | 5 +++++ src/openvpn/misc.c | 8 +++++++- 3 files changed, 22 insertions(+), 1 deletion(-)
src/openvpn/buffer.c +10 -0
@@ -782,6 +782,16 @@ char_class (const unsigned char c, const unsigned int flags)return true;if ((flags &CC_EQUAL ) && c =='=' )return true; +if ((flags &CC_LESS_THAN ) && c =='<' ) +return true; +if ((flags &CC_GREATER_THAN ) && c =='>' ) +return true; +if ((flags &CC_PIPE ) && c =='|' ) +return true; +if ((flags &CC_QUESTION_MARK ) && c =='?' ) +return true; +if ((flags &CC_ASTERISK ) && c =='*' ) +return true;return false; }
src/openvpn/buffer.h +5 -0
@@ -736,6 +736,11 @@ const char *np (const char *str);#define CC_REVERSE_QUOTE (1<<23)#define CC_AT (1<<24)#define CC_EQUAL (1<<25) +#define CC_LESS_THAN (1<<26) +#define CC_GREATER_THAN (1<<27) +#define CC_PIPE (1<<28) +#define CC_QUESTION_MARK (1<<29) +#define CC_ASTERISK (1<<30)/* macro classes */ #define CC_NAME (CC_ALNUM|CC_UNDERBAR)
src/openvpn/misc.c +7 -1
@@ -1056,7 +1056,13 @@ hostname_randomize(const char *hostname, struct gc_arena *gc)const char *gen_path (const char *directory,const char *filename,struct gc_arena *gc) { -const char *safe_filename =string_mod_const (filename,CC_ALNUM |CC_UNDERBAR |CC_DASH |CC_DOT |CC_AT ,0 ,'_' , gc); +#if WIN32 +const int CC_PATH_RESERVED =CC_LESS_THAN |CC_GREATER_THAN |CC_COLON | +CC_DOUBLE_QUOTE |CC_SLASH |CC_BACKSLASH |CC_PIPE |CC_QUESTION_MARK |CC_ASTERISK ; +#else +const int CC_PATH_RESERVED =CC_SLASH ; +#endif +const char *safe_filename =string_mod_const (filename,CC_PRINT ,CC_PATH_RESERVED ,'_' , gc);if (safe_filename && strcmp (safe_filename, ".")
Signature · 1 line
1.7.9.5
Quoted 11 lines · Heiko Hund
If a common name (or user name, when used in conjunction with --username-as-common-name) contains UTF-8 encoded characters their octets get replaced by underscores. This becomes problematic when user "Müller" and "Möller" need to have a CCD files and both would be receive options from the file "
M__ller". The situation is even worse for non-latin alphabets, where CCD file names consist of underscores entirely.This patch removes that limitation and also allows the file names to contain any punctuation characters besided the resevered ones.
Quoted 7 lines
Signed-off-by Heiko Hund <[email protected]...>--- src/openvpn/buffer.c | 10 ++++++++++ src/openvpn/buffer.h | 5 +++++ src/openvpn/misc.c | 8 +++++++- 3 files changed, 22 insertions(+), 1 deletion(-)
ACK. Applied to master and beta/2.3.
commit 9885f57e3ac8d2e32ba20ca84f6bdd0a1a995eac (master) commit d442b8dbc4230e4252a63fbd57f149ef3fa090c8 (beta/2.3)
Author: Heiko Hund <[email protected]...> Date: Mon Oct 29 14:16:37 2012 +0100
Support UTF-8 --client-config-dir
Signed-off-by: Heiko Hund <[email protected]...>
Acked-by: David Sommerseth <[email protected]...>
Message-Id: [email protected]...
URL: http://article.gmane.org/gmane.network.openvpn.devel/7110
Signed-off-by: David Sommerseth <[email protected]...>kind regards,
David Sommerseth