Re: [PATCH v5] vfat: Deduplicate hex2bin()

From: OGAWA Hirofumi
Date: Mon Jul 31 2017 - 14:40:49 EST


Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> writes:

> We may use hex2bin() instead of custom approach.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

[...]

> + 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 <hirofumi@xxxxxxxxxxxxxxxxxx>