From: Volker Lendecke Date: Mon, 4 Jan 2021 13:03:28 +0000 (+0100) Subject: lib: Use hex_byte() in ucs2hex_pull() X-Git-Tag: samba-4.14.0rc1~150 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=41e1b340265d902b86a757cc5baea0bdc4aba748;p=thirdparty%2Fsamba.git lib: Use hex_byte() in ucs2hex_pull() Signed-off-by: Volker Lendecke Reviewed-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/lib/util/charset/iconv.c b/lib/util/charset/iconv.c index 14a1f8652e3..1f2d49c0e27 100644 --- a/lib/util/charset/iconv.c +++ b/lib/util/charset/iconv.c @@ -25,8 +25,6 @@ #include "lib/util/dlinklist.h" #include "lib/util/charset/charset.h" #include "lib/util/charset/charset_proto.h" -#include "libcli/util/ntstatus.h" -#include "lib/util/util_str_hex.h" #ifdef HAVE_ICU_I18N #include @@ -675,8 +673,9 @@ static size_t ucs2hex_pull(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { while (*inbytesleft >= 1 && *outbytesleft >= 2) { - uint64_t v; - NTSTATUS status; + uint8_t hi = 0, lo = 0; + bool ok; + if ((*inbuf)[0] != '@') { /* seven bit ascii case */ (*outbuf)[0] = (*inbuf)[0]; @@ -692,15 +691,15 @@ static size_t ucs2hex_pull(void *cd, const char **inbuf, size_t *inbytesleft, errno = EINVAL; return -1; } - status = read_hex_bytes(&(*inbuf)[1], 4, &v); - if (!NT_STATUS_IS_OK(status)) { + ok = hex_byte(&(*inbuf)[1], &hi) && hex_byte(&(*inbuf)[3], &lo); + if (!ok) { errno = EILSEQ; return -1; } - (*outbuf)[0] = v&0xff; - (*outbuf)[1] = v>>8; + (*outbuf)[0] = lo; + (*outbuf)[1] = hi; (*inbytesleft) -= 5; (*outbytesleft) -= 2; (*inbuf) += 5;