cron2 has uploaded a new patch set (#3) to the change originally created by d12fk. ( http://gerrit.openvpn.net/c/openvpn/+/836?usp=email )
The following approvals got outdated and were removed: Code-Review+2 by cron2 Change subject: service: add utf8to16 function that takes a size ...................................................................... service: add utf8to16 function that takes a size utf8to16_size() takes the size of the to be converted string. This is needed to convert MULTI_SZ strings, which contain inline NUL characters, but can be useful in other cases as well. Change-Id: I6b4aa3d63c0b684bf95841271c04bc5d9c37793b Signed-off-by: Heiko Hund <he...@ist.eigentlich.net> Acked-by: Frank Lichtenheld <fr...@lichtenheld.com> Acked-by: Gert Doering <g...@greenie.muc.de> Message-Id: <20241221224136.20984-1-g...@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg30158.html Signed-off-by: Gert Doering <g...@greenie.muc.de> --- M src/openvpnserv/common.c M src/openvpnserv/service.h 2 files changed, 37 insertions(+), 6 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/36/836/3 diff --git a/src/openvpnserv/common.c b/src/openvpnserv/common.c index 96bf800..61a7296 100644 --- a/src/openvpnserv/common.c +++ b/src/openvpnserv/common.c @@ -247,17 +247,16 @@ return error; } -/* Convert a utf8 string to utf16. Caller should free the result */ wchar_t * -utf8to16(const char *utf8) +utf8to16_size(const char *utf8, int size) { - int n = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0); + int n = MultiByteToWideChar(CP_UTF8, 0, utf8, size, NULL, 0); wchar_t *utf16 = malloc(n * sizeof(wchar_t)); if (!utf16) { return NULL; } - MultiByteToWideChar(CP_UTF8, 0, utf8, -1, utf16, n); + MultiByteToWideChar(CP_UTF8, 0, utf8, size, utf16, n); return utf16; } diff --git a/src/openvpnserv/service.h b/src/openvpnserv/service.h index 6d0827d..6b559a5 100644 --- a/src/openvpnserv/service.h +++ b/src/openvpnserv/service.h @@ -89,8 +89,40 @@ DWORD MsgToEventLog(DWORD flags, LPCTSTR lpszMsg, ...); -/* Convert a utf8 string to utf16. Caller should free the result */ -wchar_t *utf8to16(const char *utf8); +/** + * Convert a UTF-8 string to UTF-16 + * + * The size parameter can be used to convert strings which contain inline NUL + * characters, like MULTI_SZ strings used as values in the registry do, + * or (sub)strings that are not zero terminated. If size is -1 the length + * of the string is determined automatically by the WIN32 API. Make sure + * you pass a terminated string or else bad things will happen. Note that + * the size you pass should always include the terminating zero as well. + * + * If the returned string is not NULL it must be freed by the caller. + * + * @param utf8 const string to be converted + * @param size the size of the string + * + * @return wchar_t* heap allocated result string + */ +wchar_t *utf8to16_size(const char *utf8, int size); + +/** + * Convert a zero terminated UTF-8 string to UTF-16 + * + * This is just a wrapper function that always passes -1 as string size + * to \ref utf8to16_size. + * + * @param utf8 const string to be converted + * + * @return wchar_t* heap allocated result string + */ +static inline wchar_t * +utf8to16(const char *utf8) +{ + return utf8to16_size(utf8, -1); +} /* return windows system directory as a pointer to a static string */ const wchar_t *get_win_sys_path(void); -- To view, visit http://gerrit.openvpn.net/c/openvpn/+/836?usp=email To unsubscribe, or for help writing mail filters, visit http://gerrit.openvpn.net/settings Gerrit-Project: openvpn Gerrit-Branch: master Gerrit-Change-Id: I6b4aa3d63c0b684bf95841271c04bc5d9c37793b Gerrit-Change-Number: 836 Gerrit-PatchSet: 3 Gerrit-Owner: d12fk <he...@openvpn.net> Gerrit-Reviewer: cron2 <g...@greenie.muc.de> Gerrit-Reviewer: flichtenheld <fr...@lichtenheld.com> Gerrit-Reviewer: plaisthos <arne-open...@rfc2549.org> Gerrit-CC: openvpn-devel <openvpn-devel@lists.sourceforge.net> Gerrit-MessageType: newpatchset
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel