On Tue, 2022-05-10 at 12:57 +0200, Bjørn Mork wrote: > Unless otherwise specified, all strings use UNICODE UTF-16LE > encodings limited to characters from the Basic Multilingual > Plane. Strings shall not be terminated by a NULL character. > > > + /* convert to utf-16 little endian */ > > for (i = 0; i < l; i++) > > - p[i * 2] = in[i]; > > + p[i * 2] = htole16(in[i]); > > > > return 0; > > } > > > This new code is buggy. It fails on BE and makes no difference on > LE. Both p and in are byte arrays. The byte you write into p on a BE > system will be aither 0x00 or 0xff depending on the MSB of in[i].
True, I will remove that le16 conversion part and retest. > > The previous code was sort of correct, assuming that the input is mostly > ascii mapping to the same value in unicode. Ideally we should do real > utf16le conversion of the input. But then someone has to decide if the > input is utf8 or something else first. And you need a real utf16 > implementation. Not sure it's worth it. Did you ever see an operator > use a non-ascii APN, username, password or pin code? Agree, it's best for now to just leave it as is. -- Regards Daniel Danzberger embeDD GmbH, Alter Postplatz 2, CH-6370 Stans _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel