Andy Shevchenko <[email protected]> writes:

> We may use hex2bin() instead of custom approach.
>
> Signed-off-by: Andy Shevchenko <[email protected]>

[...]

> +     u8 hc[2];

Let's move this to following more local scope.

>       if (utf8) {
>               *outlen = utf8s_to_utf16s(name, len, UTF16_HOST_ENDIAN,
> @@ -532,31 +532,16 @@ xlate_to_uni(const unsigned char *name, int len, 
> unsigned char *outname,
>                       if (escape && (*ip == ':')) {
                                u8 uc[2];

Here.

>                               if (i > len - 5)
>                                       return -EINVAL;

[...]

> +                             fill = hex2bin(hc, ip + 1, 2);
> +                             if (fill)
> +                                     return fill;

This should not use random errno (in this case, it is -1 (EPERM)).

> +                             *op++ = hc[1];
> +                             *op++ = hc[0];

Maybe, originally endian bug?

>                               ip += 5;
>                               i += 5;
>                       } else {
> -                             charlen = nls->char2uni(ip, len - i,
> -                                                                     
> (wchar_t *)op);
> +                             charlen = nls->char2uni(ip, len - i, (wchar_t 
> *)op);
>                               if (charlen < 0)
>                                       return -EINVAL;
>                               ip += charlen;

I will send a modified patch.

Thanks.
-- 
OGAWA Hirofumi <[email protected]>

Reply via email to