lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 6 Feb 2017 19:48:39 +0300
From:   Sergei Shtylyov <sergei.shtylyov@...entembedded.com>
To:     Richard Leitner <richard.leitner@...data.com>,
        linux-usb@...r.kernel.org
Cc:     linux-kernel@...r.kernel.org, devicetree@...r.kernel.org,
        gregkh@...uxfoundation.org, robh+dt@...nel.org,
        mark.rutland@....com, akpm@...ux-foundation.org,
        andriy.shevchenko@...ux.intel.com, keescook@...omium.org,
        dev@...l1n.net
Subject: Re: [PATCH v3 1/3] lib/string: introduce ascii2utf16le() helper

Hello!

On 02/06/2017 05:03 PM, Richard Leitner wrote:

> For USB string descriptors we need to convert ASCII strings to UTF16-LE.
> Therefore make a simple helper function (based on ascii2desc from
> drivers/usb/core/hcd.c) for that purpose.
>
> Signed-off-by: Richard Leitner <richard.leitner@...data.com>
[...]
> diff --git a/lib/string.c b/lib/string.c
> index ed83562..a113e3e 100644
> --- a/lib/string.c
> +++ b/lib/string.c
> @@ -952,3 +952,29 @@ char *strreplace(char *s, char old, char new)
>  	return s;
>  }
>  EXPORT_SYMBOL(strreplace);
> +
> +/**
> + * ascii2utf16le() - Helper routine for producing UTF-16LE string descriptors
> + * @s: Null-terminated ASCII (actually ISO-8859-1) string
> + * @buf: Buffer for UTF-16LE string
> + * @len: Length (in bytes; may be odd) of UTF-16LE buffer.
> + *
> + * Return: The number of bytes filled in: 2*strlen(s) or @len, whichever is less
> + */
> +unsigned int ascii2utf16le(char const *s, u8 *buf, unsigned int len)
> +{
> +	unsigned int n, t = 2 * strlen(s);
> +
> +	if (len > t)
> +		len = t;
> +	n = len;
> +	while (n--) {
> +		t = (unsigned char)*s++;
> +		*buf++ = t;
> +		if (!n--)
> +			break;
> +		*buf++ = t >> 8;

    Isn't it always 0?

> +	}
> +	return len;
> +}
> +EXPORT_SYMBOL(ascii2utf16le);

MBR, Sergei

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ