Alan Stern wrote: > Your comments agree pretty well with what I had concluded. However a > lot of the source files have lengthy tables of wchar_t values; changing > them to 32 bits would waste a lot of space. > > As a sort of compromise, I came up with this patch (not tested yet, > although it compiles okay). How does it look to you? >From a not-having-it-tested-either perspective, it looks good. > +utf8_to_utf32(unicode_t *p, const u8 *s, int n) > +utf32_to_utf8(u8 *s, unicode_t u, int maxlen) > +utf8s_to_utf16s(wchar_t *pwcs, const u8 *s, int n) > +utf16s_to_utf8s(u8 *s, const wchar_t *pwcs, int maxlen, int inlen, Minor nitpick: You already have enhanced the insane parameter ordering of wcsntombs_be(), but the meaning of all these functions' parameters would be even more obvious if the buffer size would immediately follow the corresponding buffer pointer. Anyway, Acked-by: Clemens Ladisch <clemens@xxxxxxxxxx> > +++ usb-2.6/fs/isofs/joliet.c > ... > -static int > -wcsntombs_be(__u8 *s, const __u8 *pwcs, int inlen, int maxlen) > -{ > ... > - } else { > - *op++ = (__u8) c; > - } Just for the record: this function had the same buffer overflow bug as utf8_wcstombs(), but it wasn't exploitable either. Best regards, Clemens -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html