]> git.ipfire.org Git - thirdparty/openvpn.git/commit
handle Windows unicode paths
authorHeiko Hund <heiko.hund@sophos.com>
Fri, 10 Feb 2012 14:13:42 +0000 (15:13 +0100)
committerDavid Sommerseth <davids@redhat.com>
Mon, 13 Feb 2012 16:11:50 +0000 (17:11 +0100)
commit71bbbd76c62630c88441237d72fe5b61f0b45b2a
tree715f8c8183c6e47bb26f0a10c0f6b14f9b9f83a2
parent2ee0dc2bd72ec318fcc227af54e5ca7e1384a6cc
handle Windows unicode paths

Openvpn for Windows is not compiled as a Unicode binary and thus cannot
handle paths which contain non-ASCII characters using the argv vector.
Characters that are not present in the system codepage are simply replaced
with a question mark, e.g. if started as 'openvpn --config домой.ovpn'
the file '?????.ovpn' is tried to be opened as configuration.

The same applies to paths in config files which need to be UTF-8
encoded if they contain non ASCII characters. The option line
'key лев.pem' will lead to openvpn trying to open 'лев.pem' on a
system with codepage 1252.

This patch makes openvpn read the command line in UCS-2 and convert
it to UTF-8 internally. Windows stores names in the filesystem in UCS-2.
When using a paths openvpn converts it from UTF-8 to UCS-2 and uses the
wide character Windows API function.

Signed-off-by: Heiko Hund <heiko.hund@sophos.com>
Acked-by: David Sommerseth <davids@redhat.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
18 files changed:
buffer.c
crypto.c
error.c
manage.c
misc.c
misc.h
options.c
packet_id.c
pf.c
plugin.c
ps.c
ssl_openssl.c
ssl_verify.c
ssl_verify_openssl.c
status.c
syshead.h
win32.c
win32.h