On 13 August 2018 at 15:06, Val Baranov <val.baranov at duke.edu> wrote: [...]> test_utf8: ........................ > regress/unittests/utf8/tests.c:48 test #25 "c_esc" > ASSERT_INT_EQ(len, wantlen) failed: > len = -1 > wantlen = 5This boils down to meaning OpenSSH's smnprintf call failed for the string "\033x" instead of returning the expected escaped version "\\033x". The code is in utf8.c but I am not sure why it failed. What's your locale set to? You can run the rest of the tests on your platform by running: TEST_SSH_UTF8=no make testst -- Darren Tucker (dtucker at dtucker.net) GPG key 11EAA6FA / A86E 3E07 5B19 5880 E860 37F4 9357 ECEF 11EA A6FA (new) Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.
Hi Darren, Darren Tucker wrote on Fri, Aug 17, 2018 at 07:16:03AM -0700:> On 13 August 2018 at 15:06, Val Baranov <val.baranov at duke.edu> wrote:>> test_utf8: ........................ >> regress/unittests/utf8/tests.c:48 test #25 "c_esc" >> ASSERT_INT_EQ(len, wantlen) failed: >> len = -1 >> wantlen = 5> This boils down to meaning OpenSSH's smnprintf call failed for the > string "\033x" instead of returning the expected escaped version > "\\033x". The code is in utf8.c but I am not sure why it failed.Actually, it is *supposed* to fail unless the locale is either UTF-8 or the POSIX (ASCII) locale, because '\033' is not a printable character and attempting to escape invalid stuff is unsafe in arbitrary locales.> What's your locale set to?It doesn't matter on OpenBSD, but maybe you should consider setting LC_CTYPE=en_US.UTF-8 by default in TEST_ENV in the portable version of the test suite? Of course, it would do no harm on OpenBSD either. If you worry that some target system might not have a en_US.UTF-8 locale installed, you can look at http://mandoc.bsd.lv/cgi-bin/cvsweb/configure?rev=HEAD for a way to autodetect a suitable UTF-8 locale - look for UTF8_LOCALE in that script. But that may be overkill for OpenSSH. Just recklessly forcing LC_CTYPE=en_US.UTF-8 may be good enough for OpenSSH's purposes. If the target system doesn't provide it, setlocale(3) will fall back to POSIX, which should be good enough for the tests. Yours, Ingo
Sent from my iPhone> On 17 Aug 2018, at 17:15, Ingo Schwarze <schwarze at usta.de> wrote: > > Hi Darren, > > Darren Tucker wrote on Fri, Aug 17, 2018 at 07:16:03AM -0700: >> On 13 August 2018 at 15:06, Val Baranov <val.baranov at duke.edu> wrote: > >>> test_utf8: ........................ >>> regress/unittests/utf8/tests.c:48 test #25 "c_esc" >>> ASSERT_INT_EQ(len, wantlen) failed: >>> len = -1 >>> wantlen = 5 > >> This boils down to meaning OpenSSH's smnprintf call failed for the >> string "\033x" instead of returning the expected escaped version >> "\\033x". The code is in utf8.c but I am not sure why it failed. > > Actually, it is *supposed* to fail unless the locale is either > UTF-8 or the POSIX (ASCII) locale, because '\033' is not a > printable character and attempting to escape invalid stuff > is unsafe in arbitrary locales. > >> What's your locale set to? >Irrc the default on AIX. is iso-18559-15 (hope i have all the numbers right. In any case not utf-8. AIX 7.2 may be different. In any case on AIX 6.1 the test logic automatically sets utf8 test to no.> It doesn't matter on OpenBSD, but maybe you should consider setting > LC_CTYPE=en_US.UTF-8 by default in TEST_ENV in the portable version > of the test suite? Of course, it would do no harm on OpenBSD either. > > If you worry that some target system might not have a en_US.UTF-8 > locale installed, you can look at > > http://mandoc.bsd.lv/cgi-bin/cvsweb/configure?rev=HEAD > > for a way to autodetect a suitable UTF-8 locale - look for UTF8_LOCALE > in that script. > > But that may be overkill for OpenSSH. Just recklessly forcing > LC_CTYPE=en_US.UTF-8 may be good enough for OpenSSH's purposes. > If the target system doesn't provide it, setlocale(3) will fall > back to POSIX, which should be good enough for the tests. > > Yours, > Ingo > _______________________________________________ > openssh-unix-dev mailing list > openssh-unix-dev at mindrot.org > https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
On 17/08/2018 17:15, Ingo Schwarze wrote:> Hi Darren, > > Darren Tucker wrote on Fri, Aug 17, 2018 at 07:16:03AM -0700: >> On 13 August 2018 at 15:06, Val Baranov <val.baranov at duke.edu> wrote: >>> test_utf8: ........................ >>> regress/unittests/utf8/tests.c:48 test #25 "c_esc" >>> ASSERT_INT_EQ(len, wantlen) failed: >>> len = -1 >>> wantlen = 5 >> This boils down to meaning OpenSSH's smnprintf call failed for the >> string "\033x" instead of returning the expected escaped version >> "\\033x". The code is in utf8.c but I am not sure why it failed. > Actually, it is *supposed* to fail unless the locale is either > UTF-8 or the POSIX (ASCII) locale, because '\033' is not a > printable character and attempting to escape invalid stuff > is unsafe in arbitrary locales. > >> What's your locale set to?OK. Double checked. AIX defaults: environment: LANG=en_US root at x064:[/usr/lib/nls/loc]ls -l /usr/lib/nls/loc/en_US lrwxrwxrwx??? 1 bin????? bin????????????? 32 Aug 02 06:40 /usr/lib/nls/loc/en_US -> /usr/lib/nls/loc/en_US.ISO8859-1 And, after installing the UTF-8 fileset (? /usr/lib/nls/loc/en_US.UTF-8??????????????? bos.loc.utf.EN_US???? File) The test is attempted, and fails. Question #1 - how can I run only this test? Then it is easier to look for potential resolutions.> It doesn't matter on OpenBSD, but maybe you should consider setting > LC_CTYPE=en_US.UTF-8 by default in TEST_ENV in the portable version > of the test suite? Of course, it would do no harm on OpenBSD either.While I wait for the answer - I'll just run the tests prefixed with export? LC_CTYPE=en_US.UTF-8 - maybe that is all that is needed. Reminds me of Question #2: how is your definition of POSIX different from ISO8859-1 (and/or ISO8859-15, the "UK" or EN_US variant)?> If you worry that some target system might not have a en_US.UTF-8 > locale installed, you can look at > > http://mandoc.bsd.lv/cgi-bin/cvsweb/configure?rev=HEAD > > for a way to autodetect a suitable UTF-8 locale - look for UTF8_LOCALE > in that script. > > But that may be overkill for OpenSSH. Just recklessly forcing > LC_CTYPE=en_US.UTF-8 may be good enough for OpenSSH's purposes. > If the target system doesn't provide it, setlocale(3) will fall > back to POSIX, which should be good enough for the tests. > > Yours, > Ingo > _______________________________________________ > openssh-unix-dev mailing list > openssh-unix-dev at mindrot.org > https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
> On 17 August 2018 at 10:16, Darren Tucker <dtucker at dtucker.net> wrote: >> On 13 August 2018 at 15:06, Val Baranov <val.baranov at duke.edu> wrote: >> [...] >> test_utf8: ........................ >> regress/unittests/utf8/tests.c:48 test #25 "c_esc" >> ASSERT_INT_EQ(len, wantlen) failed: >> len = -1 >> wantlen = 5> This boils down to meaning OpenSSH's smnprintf call failed for the string "\033x" instead of returning the expected escaped version "\\033x". > The code is in utf8.c but I am not sure why it failed. > What's your locale set to? > > You can run the rest of the tests on your platform by running: > > TEST_SSH_UTF8=no make teststThe locale is: LANG=en_US LC_COLLATE="en_US" LC_CTYPE="en_US" LC_MONETARY="en_US" LC_NUMERIC="en_US" LC_TIME="en_US" LC_MESSAGES="en_US" LC_ALL "TEST_SSH_UTF8=no make tests " command produced the same error. ./nl_langinfo setlocale -> "C" nl_langinfo -> "ISO8859-1"