standards/188036: mblen(3) in EUC locales causes crash and segmentation fault.

Tomohisa Tanaka tomohisa.tanaka at gmail.com
Mon Mar 31 16:10:03 UTC 2014


The following reply was made to PR standards/188036; it has been noted by GNATS.

From: Tomohisa Tanaka <tomohisa.tanaka at gmail.com>
To: David Chisnall <theraven at freebsd.org>
Cc: freebsd-gnats-submit at freebsd.org
Subject: Re: standards/188036: mblen(3) in EUC locales causes crash and
 segmentation fault.
Date: Tue, 1 Apr 2014 01:01:46 +0900

 --20cf303f672e1e5ef404f5e92be2
 Content-Type: multipart/alternative; boundary=20cf303f672e1e5ef004f5e92be0
 
 --20cf303f672e1e5ef004f5e92be0
 Content-Type: text/plain; charset=ISO-8859-1
 
 Thank you for your quick reply.
 
 Please can you test this and let me know if it fixes it for you?
 
 
 Yes, but it does not work for me as follows:
 
 % gcc -g3 main.c ~/work/freebsd-usr-src/lib/libc/libc.a
 % gdb ./a.out
 GNU gdb 6.1.1 [FreeBSD]
 Copyright 2004 Free Software Foundation, Inc.
 GDB is free software, covered by the GNU General Public License, and you are
 welcome to change it and/or distribute copies of it under certain conditions.
 Type "show copying" to see the conditions.
 There is absolutely no warranty for GDB.  Type "show warranty" for details.
 This GDB was configured as "amd64-marcel-freebsd"...
 (gdb) run
 Starting program: /usr/home/syl/work/mblen/a.out
 setlocale: ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/C
 
 Program received signal SIGSEGV, Segmentation fault.
 0x000000000041823b in _EUC_mbrtowc (pwc=0x0, s=0x4321b2 "a", n=1, ps=0x63f318)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/euc.c:182
 182                     want = CEI->count[set = _euc_set(*s)];
 (gdb) bt
 #0  0x000000000041823b in _EUC_mbrtowc (pwc=0x0, s=0x4321b2 "a", n=1,
     ps=0x63f318)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/euc.c:182
 #1  0x0000000000406def in mblen_l (s=0x4321b2 "a", n=1, locale=0x63f260)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/mblen.c:51
 #2  0x0000000000406e95 in mblen (s=0x4321b2 "a", n=1)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/mblen.c:60
 #3  0x0000000000406bb6 in main () at main.c:16
 (gdb)
 
 
 Actually, I'm not sure how this bug can manifest, unless you've somehow
 > built libc with the wrong headers.  In runtype.h (which is included in
 > euc.c), we have this:
 > #define _CurrentRuneLocale (__getCurrentRuneLocale())
 > So these two versions should expand to the same thing.
 
 
 (Your fix causes the same thing for me, so you're right.)
 The libc that I used for How-To-Repeat is not built by me (installed by
 installer).
 
 % setenv LC_MESSAGES C
 % env LANG=ja_JP.eucJP ./a.out
 setlocale: ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/C
 Segmentation fault (core dumped)
 % ldd ./a.out
 ./a.out:
         libc.so.7 => /lib/libc.so.7 (0x80081a000)
 % env LANG=C ls -l /lib/libc.so.7
 -r--r--r--  1 root  wheel  1406888 Sep 27  2013 /lib/libc.so.7
 % md5 /lib/libc.so.7
 MD5 (/lib/libc.so.7) = d997dd201ec08270e17383223fd2c40a
 
 (I verified /lib/libc.so.7 is not changed from
 http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/9.2-RELEASE/base.txz)
 I'm sorry, I had not understood this issue enough to make a patch.I
 show another sample as follows:
 
 % cat main1.c
 #include <stdio.h>
 #include <stdlib.h>
 #include <locale.h>
 #include <xlocale.h>
 #include <runetype.h>
 
 static void
 showVariables(void)
 {
   printf("_ThreadRuneLocale: %p\n", _ThreadRuneLocale);
   if (_ThreadRuneLocale != NULL) {
     printf("_ThreadRuneLocale->__variable: %p\n",
            _ThreadRuneLocale->__variable);
   }
   printf("__getCurrentRuneLocale(): %p\n", __getCurrentRuneLocale());
   if (__getCurrentRuneLocale() != NULL) {
     printf("__getCurrentRuneLocale()->__variable: %p\n",
            __getCurrentRuneLocale()->__variable);
   }
   printf("&_DefaultRuneLocale: %p\n", &_DefaultRuneLocale);
   printf("&_DefaultRuneLocale->__variable: %p\n",
          (&_DefaultRuneLocale)->__variable);
 }
 
 int
 main(void)
 {
   printf("setlocale: %s\n", setlocale(LC_ALL, ""));
 
   printf("[0]\n");
   showVariables();
 
   locale_t newLocale = newlocale(LC_ALL_MASK, "C", NULL);
   locale_t oldLocale = uselocale(newLocale);
   /* ... */
 
   printf("[1]\n");
   showVariables();
 
   uselocale(oldLocale);
 
   printf("[2]\n");
   showVariables();
 
   printf("%d\n", mblen("a", 1));
   return 0;
 }
 % gcc -g3 main1.c
 % gdb ./a.out
 GNU gdb 6.1.1 [FreeBSD]
 Copyright 2004 Free Software Foundation, Inc.
 GDB is free software, covered by the GNU General Public License, and you are
 welcome to change it and/or distribute copies of it under certain conditions.
 Type "show copying" to see the conditions.
 There is absolutely no warranty for GDB.  Type "show warranty" for details.
 This GDB was configured as "amd64-marcel-freebsd"...
 (gdb) run
 Starting program: /usr/home/syl/work/mblen/a.out
 setlocale: ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/C
 [0]
 _ThreadRuneLocale: 0x0
 __getCurrentRuneLocale(): 0x800d0c000
 __getCurrentRuneLocale()->__variable: 0x800c07040
 &_DefaultRuneLocale: 0x600ee0
 &_DefaultRuneLocale->__variable: 0x0
 [1]
 _ThreadRuneLocale: 0x600ee0
 _ThreadRuneLocale->__variable: 0x0
 __getCurrentRuneLocale(): 0x600ee0
 __getCurrentRuneLocale()->__variable: 0x0
 &_DefaultRuneLocale: 0x600ee0
 &_DefaultRuneLocale->__variable: 0x0
 [2]
 _ThreadRuneLocale: 0x600ee0
 _ThreadRuneLocale->__variable: 0x0
 __getCurrentRuneLocale(): 0x600ee0
 __getCurrentRuneLocale()->__variable: 0x0
 &_DefaultRuneLocale: 0x600ee0
 &_DefaultRuneLocale->__variable: 0x0
 
 Program received signal SIGSEGV, Segmentation fault.
 0x0000000800908880 in mbsnrtowcs () from /lib/libc.so.7
 (gdb)
 
 After calling 'uselocale(oldLocale)' [2], _ThreadRuneLocale should not
 be 0x600ee0.It is strange that the states [1] and [2] are the same. (I
 hope this helps.)
 
 If I can help you in any other way, please let me know.
 
 
 
 2014-03-31 18:57 GMT+09:00 David Chisnall <theraven at freebsd.org>:
 
 > On 31 Mar 2014, at 10:03, David Chisnall <theraven at FreeBSD.org> wrote:
 >
 > > I think the fix should actually be:
 > >
 > > Index: locale/euc.c
 > > ===================================================================
 > > --- locale/euc.c      (revision 263226)
 > > +++ locale/euc.c      (working copy)
 > > @@ -134,7 +134,7 @@
 > >       return (ps == NULL || ((const _EucState *)ps)->want == 0);
 > > }
 > >
 > > -#define      CEI     ((_EucInfo *)(_CurrentRuneLocale->__variable))
 > > +#define      CEI     ((_EucInfo
 > *)(__getCurrentRuneLocale()->__variable))
 > >
 > > #define       _SS2    0x008e
 > > #define       _SS3    0x008f
 > >
 > >
 > >
 > > Please can you test this and let me know if it fixes it for you?
 >
 > Actually, I'm not sure how this bug can manifest, unless you've somehow
 > built libc with the wrong headers.  In runtype.h (which is included in
 > euc.c), we have this:
 >
 > #define _CurrentRuneLocale (__getCurrentRuneLocale())
 >
 > So these two versions should expand to the same thing.
 >
 > David
 >
 >
 
 
 -- 
 Tomohisa Tanaka
 Tomohisa.Tanaka at gmail.com
 
 --20cf303f672e1e5ef004f5e92be0
 Content-Type: text/html; charset=ISO-8859-1
 Content-Transfer-Encoding: quoted-printable
 
 <div dir=3D"ltr">Thank you for your quick reply.<br><br><blockquote class=
 =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;bo=
 rder-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">=
 Please can you test this and let me know if it fixes it for you?</blockquot=
 e>
 <br>Yes, but it does not work for me as follows:<br><pre style=3D"color:rgb=
 (0,0,0);word-wrap:break-word;white-space:pre-wrap">% gcc -g3 main.c ~/work/=
 freebsd-usr-src/lib/libc/libc.a=20
 % gdb ./a.out=20
 GNU gdb 6.1.1 [FreeBSD]
 Copyright 2004 Free Software Foundation, Inc.
 GDB is free software, covered by the GNU General Public License, and you ar=
 e
 welcome to change it and/or distribute copies of it under certain condition=
 s.
 Type "show copying" to see the conditions.
 There is absolutely no warranty for GDB.  Type "show warranty" fo=
 r details.
 This GDB was configured as "amd64-marcel-freebsd"...
 (gdb) run
 Starting program: /usr/home/syl/work/mblen/a.out=20
 setlocale: ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/C
 
 Program received signal SIGSEGV, Segmentation fault.
 0x000000000041823b in _EUC_mbrtowc (pwc=3D0x0, s=3D0x4321b2 "a", =
 n=3D1, ps=3D0x63f318)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/euc.c:182
 182                     want =3D CEI->count[set =3D _euc_set(*s)];
 (gdb) bt
 #0  0x000000000041823b in _EUC_mbrtowc (pwc=3D0x0, s=3D0x4321b2 "a&quo=
 t;, n=3D1,=20
     ps=3D0x63f318)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/euc.c:182
 #1  0x0000000000406def in mblen_l (s=3D0x4321b2 "a", n=3D1, local=
 e=3D0x63f260)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/mblen.c:51
 #2  0x0000000000406e95 in mblen (s=3D0x4321b2 "a", n=3D1)
     at /usr/home/syl/work/freebsd-usr-src/lib/libc/locale/mblen.c:60
 #3  0x0000000000406bb6 in main () at main.c:16
 (gdb) </pre><br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
 px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-le=
 ft-style:solid;padding-left:1ex">Actually, I'm not sure how this bug ca=
 n manifest, unless you've somehow built libc with the wrong headers. =
 =A0In runtype.h (which is included in euc.c), we have this:<br>
 #define _CurrentRuneLocale (__getCurrentRuneLocale())<br>So these two versi=
 ons should expand to the same thing.</blockquote><div><br></div><div>(Your =
 fix causes the same thing for me, so you're right.)</div><div>The libc =
 that I used for How-To-Repeat is not built by me (installed by installer).<=
 /div>
 <pre style=3D"color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap">%=
  setenv LC_MESSAGES C
 % env LANG=3Dja_JP.eucJP ./a.out
 setlocale: ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/C
 Segmentation fault (core dumped)
 % ldd ./a.out
 ./a.out:
         libc.so.7 =3D> /lib/libc.so.7 (0x80081a000)
 % env LANG=3DC ls -l /lib/libc.so.7=20
 -r--r--r--  1 root  wheel  1406888 Sep 27  2013 /lib/libc.so.7
 % md5 /lib/libc.so.7
 MD5 (/lib/libc.so.7) =3D d997dd201ec08270e17383223fd2c40a</pre><pre style=
 =3D"word-wrap:break-word"><font face=3D"arial"><span style=3D"white-space:n=
 ormal">(I verified /lib/libc.so.7 is not changed from<br></span></font><spa=
 n style=3D"color:rgb(0,0,0);font-family:arial;white-space:pre-wrap"><a href=
 =3D"http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/9.2-RELEASE/base.txz"=
 >http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/9.2-RELEASE/base.txz</a>=
 )
 </span><span style=3D"color:rgb(0,0,0);font-family:arial;white-space:pre-wr=
 ap">
 I'm sorry, I had not understood this issue enough to make a patch.
 </span><span style=3D"color:rgb(0,0,0);font-family:arial;white-space:pre-wr=
 ap">I show another sample as follows:</span></pre><pre style=3D"word-wrap:b=
 reak-word"><pre style=3D"color:rgb(0,0,0);word-wrap:break-word;white-space:=
 pre-wrap">
 % cat main1.c
 #include <stdio.h>
 #include <stdlib.h>
 #include <locale.h>
 #include <xlocale.h>
 #include <runetype.h>
 
 static void
 showVariables(void)
 {
   printf("_ThreadRuneLocale: %p\n", _ThreadRuneLocale);
   if (_ThreadRuneLocale !=3D NULL) {
     printf("_ThreadRuneLocale->__variable: %p\n",
            _ThreadRuneLocale->__variable);
   }
   printf("__getCurrentRuneLocale(): %p\n", __getCurrentRuneLocale=
 ());
   if (__getCurrentRuneLocale() !=3D NULL) {
     printf("__getCurrentRuneLocale()->__variable: %p\n",
            __getCurrentRuneLocale()->__variable);
   }
   printf("&_DefaultRuneLocale: %p\n", &_DefaultRuneLocale=
 );
   printf("&_DefaultRuneLocale->__variable: %p\n",
          (&_DefaultRuneLocale)->__variable);
 }
 
 int
 main(void)
 {
   printf("setlocale: %s\n", setlocale(LC_ALL, ""));
 
   printf("[0]\n");
   showVariables();
 
   locale_t newLocale =3D newlocale(LC_ALL_MASK, "C", NULL);
   locale_t oldLocale =3D uselocale(newLocale);
   /* ... */
 
   printf("[1]\n");
   showVariables();
 
   uselocale(oldLocale);
 
   printf("[2]\n");
   showVariables();
 
   printf("%d\n", mblen("a", 1));
   return 0;
 }
 % gcc -g3 main1.c
 % gdb ./a.out
 GNU gdb 6.1.1 [FreeBSD]
 Copyright 2004 Free Software Foundation, Inc.
 GDB is free software, covered by the GNU General Public License, and you ar=
 e
 welcome to change it and/or distribute copies of it under certain condition=
 s.
 Type "show copying" to see the conditions.
 There is absolutely no warranty for GDB.  Type "show warranty" fo=
 r details.
 This GDB was configured as "amd64-marcel-freebsd"...
 (gdb) run
 Starting program: /usr/home/syl/work/mblen/a.out=20
 setlocale: ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/ja_JP.eucJP/C
 [0]
 _ThreadRuneLocale: 0x0
 __getCurrentRuneLocale(): 0x800d0c000
 __getCurrentRuneLocale()->__variable: 0x800c07040
 &_DefaultRuneLocale: 0x600ee0
 &_DefaultRuneLocale->__variable: 0x0
 [1]
 _ThreadRuneLocale: 0x600ee0
 _ThreadRuneLocale->__variable: 0x0
 __getCurrentRuneLocale(): 0x600ee0
 __getCurrentRuneLocale()->__variable: 0x0
 &_DefaultRuneLocale: 0x600ee0
 &_DefaultRuneLocale->__variable: 0x0
 [2]
 _ThreadRuneLocale: 0x600ee0
 _ThreadRuneLocale->__variable: 0x0
 __getCurrentRuneLocale(): 0x600ee0
 __getCurrentRuneLocale()->__variable: 0x0
 &_DefaultRuneLocale: 0x600ee0
 &_DefaultRuneLocale->__variable: 0x0
 
 Program received signal SIGSEGV, Segmentation fault.
 0x0000000800908880 in mbsnrtowcs () from /lib/libc.so.7
 (gdb) <span style=3D"font-family:arial"> </span></pre><pre style=3D"word-wr=
 ap:break-word"><pre style=3D"word-wrap:break-word"><span style=3D"white-spa=
 ce:pre-wrap;color:rgb(0,0,0);font-family:arial">After calling 'uselocal=
 e(oldLocale)' [2], _ThreadRuneLocale </span><span style=3D"white-space:=
 pre-wrap;color:rgb(0,0,0);font-family:arial">should not be 0x600ee0.
 </span><span style=3D"color:rgb(0,0,0)"><font face=3D"arial"><span style=3D=
 "white-space:pre-wrap">It is strange that the states [1] and [2] are the sa=
 me. (I hope this helps.)</span></font></span></pre><pre style=3D"word-wrap:=
 break-word">
 <span style=3D"color:rgb(0,0,0);font-family:Arial,'Arial New','=
 \00ff2d\00ff33 \00ff30 \0030b4\0030b7\0030c3\0030af',sans-serif;font-si=
 ze:13px;white-space:normal">If I can help you in any other way, please let =
 me know.</span></pre>
 <pre style=3D"color:rgb(34,34,34);white-space:pre-wrap;word-wrap:break-word=
 "></pre></pre></pre></div><div class=3D"gmail_extra"><br><br><div class=3D"=
 gmail_quote">2014-03-31 18:57 GMT+09:00 David Chisnall <span dir=3D"ltr">&l=
 t;<a href=3D"mailto:theraven at freebsd.org" target=3D"_blank">theraven at freebs=
 d.org</a>></span>:<br>
 <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
 x #ccc solid;padding-left:1ex"><div class=3D"">On 31 Mar 2014, at 10:03, Da=
 vid Chisnall <theraven at FreeBSD.org> wrote:<br>
 <br>
 > I think the fix should actually be:<br>
 ><br>
 > Index: locale/euc.c<br>
 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
 > --- locale/euc.c =A0 =A0 =A0(revision 263226)<br>
 > +++ locale/euc.c =A0 =A0 =A0(working copy)<br>
 > @@ -134,7 +134,7 @@<br>
 > =A0 =A0 =A0 return (ps =3D=3D NULL || ((const _EucState *)ps)->want=
  =3D=3D 0);<br>
 > }<br>
 ><br>
 > -#define =A0 =A0 =A0CEI =A0 =A0 ((_EucInfo *)(_CurrentRuneLocale->_=
 _variable))<br>
 > +#define =A0 =A0 =A0CEI =A0 =A0 ((_EucInfo *)(__getCurrentRuneLocale()=
 ->__variable))<br>
 ><br>
 > #define =A0 =A0 =A0 _SS2 =A0 =A00x008e<br>
 > #define =A0 =A0 =A0 _SS3 =A0 =A00x008f<br>
 ><br>
 ><br>
 ><br>
 > Please can you test this and let me know if it fixes it for you?<br>
 <br>
 </div>Actually, I'm not sure how this bug can manifest, unless you'=
 ve somehow built libc with the wrong headers. =A0In runtype.h (which is inc=
 luded in euc.c), we have this:<br>
 <br>
 #define _CurrentRuneLocale (__getCurrentRuneLocale())<br>
 <br>
 So these two versions should expand to the same thing.<br>
 <span class=3D"HOEnZb"><font color=3D"#888888"><br>
 David<br>
 <br>
 </font></span></blockquote></div><br><br clear=3D"all"><div><br></div>-- <b=
 r>Tomohisa Tanaka<br><a href=3D"mailto:Tomohisa.Tanaka at gmail.com">Tomohisa.=
 Tanaka at gmail.com</a>
 </div>
 
 --20cf303f672e1e5ef004f5e92be0--
 --20cf303f672e1e5ef404f5e92be2
 Content-Type: text/plain; charset=US-ASCII; name="report1.txt"
 Content-Disposition: attachment; filename="report1.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_htfxye6m0
 
 JSBnY2MgLWczIG1haW4uYyB+L3dvcmsvZnJlZWJzZC11c3Itc3JjL2xpYi9saWJjL2xpYmMuYQol
 IGdkYiAuL2Eub3V0CkdOVSBnZGIgNi4xLjEgW0ZyZWVCU0RdCkNvcHlyaWdodCAyMDA0IEZyZWUg
 U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpHREIgaXMgZnJlZSBzb2Z0d2FyZSwgY292ZXJlZCBi
 eSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB5b3UgYXJlCndlbGNvbWUgdG8g
 Y2hhbmdlIGl0IGFuZC9vciBkaXN0cmlidXRlIGNvcGllcyBvZiBpdCB1bmRlciBjZXJ0YWluIGNv
 bmRpdGlvbnMuClR5cGUgInNob3cgY29weWluZyIgdG8gc2VlIHRoZSBjb25kaXRpb25zLgpUaGVy
 ZSBpcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5IGZvciBHREIuICBUeXBlICJzaG93IHdhcnJhbnR5
 IiBmb3IgZGV0YWlscy4KVGhpcyBHREIgd2FzIGNvbmZpZ3VyZWQgYXMgImFtZDY0LW1hcmNlbC1m
 cmVlYnNkIi4uLgooZ2RiKSBydW4KU3RhcnRpbmcgcHJvZ3JhbTogL3Vzci9ob21lL3N5bC93b3Jr
 L21ibGVuL2Eub3V0IApzZXRsb2NhbGU6IGphX0pQLmV1Y0pQL2phX0pQLmV1Y0pQL2phX0pQLmV1
 Y0pQL2phX0pQLmV1Y0pQL2phX0pQLmV1Y0pQL0MKClByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJ
 R1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4KMHgwMDAwMDAwMDAwNDE4MjNiIGluIF9FVUNfbWJy
 dG93YyAocHdjPTB4MCwgcz0weDQzMjFiMiAiYSIsIG49MSwgcHM9MHg2M2YzMTgpCiAgICBhdCAv
 dXNyL2hvbWUvc3lsL3dvcmsvZnJlZWJzZC11c3Itc3JjL2xpYi9saWJjL2xvY2FsZS9ldWMuYzox
 ODIKMTgyICAgICAgICAgICAgICAgICAgICAgd2FudCA9IENFSS0+Y291bnRbc2V0ID0gX2V1Y19z
 ZXQoKnMpXTsKKGdkYikgCg==
 --20cf303f672e1e5ef404f5e92be2
 Content-Type: text/plain; charset=US-ASCII; name="report2.txt"
 Content-Disposition: attachment; filename="report2.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_htfxyj7g1
 
 JSBjYXQgbWFpbjEuYwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5j
 bHVkZSA8bG9jYWxlLmg+CiNpbmNsdWRlIDx4bG9jYWxlLmg+CiNpbmNsdWRlIDxydW5ldHlwZS5o
 PgoKc3RhdGljIHZvaWQKc2hvd1ZhcmlhYmxlcyh2b2lkKQp7CiAgcHJpbnRmKCJfVGhyZWFkUnVu
 ZUxvY2FsZTogJXBcbiIsIF9UaHJlYWRSdW5lTG9jYWxlKTsKICBpZiAoX1RocmVhZFJ1bmVMb2Nh
 bGUgIT0gTlVMTCkgewogICAgcHJpbnRmKCJfVGhyZWFkUnVuZUxvY2FsZS0+X192YXJpYWJsZTog
 JXBcbiIsCiAgICAgICAgICAgX1RocmVhZFJ1bmVMb2NhbGUtPl9fdmFyaWFibGUpOwogIH0KICBw
 cmludGYoIl9fZ2V0Q3VycmVudFJ1bmVMb2NhbGUoKTogJXBcbiIsIF9fZ2V0Q3VycmVudFJ1bmVM
 b2NhbGUoKSk7CiAgaWYgKF9fZ2V0Q3VycmVudFJ1bmVMb2NhbGUoKSAhPSBOVUxMKSB7CiAgICBw
 cmludGYoIl9fZ2V0Q3VycmVudFJ1bmVMb2NhbGUoKS0+X192YXJpYWJsZTogJXBcbiIsCiAgICAg
 ICAgICAgX19nZXRDdXJyZW50UnVuZUxvY2FsZSgpLT5fX3ZhcmlhYmxlKTsKICB9CiAgcHJpbnRm
 KCImX0RlZmF1bHRSdW5lTG9jYWxlOiAlcFxuIiwgJl9EZWZhdWx0UnVuZUxvY2FsZSk7CiAgcHJp
 bnRmKCImX0RlZmF1bHRSdW5lTG9jYWxlLT5fX3ZhcmlhYmxlOiAlcFxuIiwKICAgICAgICAgKCZf
 RGVmYXVsdFJ1bmVMb2NhbGUpLT5fX3ZhcmlhYmxlKTsKfQoKaW50Cm1haW4odm9pZCkKewogIHBy
 aW50Zigic2V0bG9jYWxlOiAlc1xuIiwgc2V0bG9jYWxlKExDX0FMTCwgIiIpKTsKCiAgcHJpbnRm
 KCJbMF1cbiIpOwogIHNob3dWYXJpYWJsZXMoKTsKCiAgbG9jYWxlX3QgbmV3TG9jYWxlID0gbmV3
 bG9jYWxlKExDX0FMTF9NQVNLLCAiQyIsIE5VTEwpOwogIGxvY2FsZV90IG9sZExvY2FsZSA9IHVz
 ZWxvY2FsZShuZXdMb2NhbGUpOwogIC8qIC4uLiAqLwoKICBwcmludGYoIlsxXVxuIik7CiAgc2hv
 d1ZhcmlhYmxlcygpOwoKICB1c2Vsb2NhbGUob2xkTG9jYWxlKTsKCiAgcHJpbnRmKCJbMl1cbiIp
 OwogIHNob3dWYXJpYWJsZXMoKTsKCiAgcHJpbnRmKCIlZFxuIiwgbWJsZW4oImEiLCAxKSk7CiAg
 cmV0dXJuIDA7Cn0KJSBnY2MgLWczIG1haW4xLmMKJSBnZGIgLi9hLm91dApHTlUgZ2RiIDYuMS4x
 IFtGcmVlQlNEXQpDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K
 R0RCIGlzIGZyZWUgc29mdHdhcmUsIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
 aWNlbnNlLCBhbmQgeW91IGFyZQp3ZWxjb21lIHRvIGNoYW5nZSBpdCBhbmQvb3IgZGlzdHJpYnV0
 ZSBjb3BpZXMgb2YgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgpUeXBlICJzaG93IGNvcHlp
 bmciIHRvIHNlZSB0aGUgY29uZGl0aW9ucy4KVGhlcmUgaXMgYWJzb2x1dGVseSBubyB3YXJyYW50
 eSBmb3IgR0RCLiAgVHlwZSAic2hvdyB3YXJyYW50eSIgZm9yIGRldGFpbHMuClRoaXMgR0RCIHdh
 cyBjb25maWd1cmVkIGFzICJhbWQ2NC1tYXJjZWwtZnJlZWJzZCIuLi4KKGdkYikgcnVuClN0YXJ0
 aW5nIHByb2dyYW06IC91c3IvaG9tZS9zeWwvd29yay9tYmxlbi9hLm91dCAKc2V0bG9jYWxlOiBq
 YV9KUC5ldWNKUC9qYV9KUC5ldWNKUC9qYV9KUC5ldWNKUC9qYV9KUC5ldWNKUC9qYV9KUC5ldWNK
 UC9DClswXQpfVGhyZWFkUnVuZUxvY2FsZTogMHgwCl9fZ2V0Q3VycmVudFJ1bmVMb2NhbGUoKTog
 MHg4MDBkMGMwMDAKX19nZXRDdXJyZW50UnVuZUxvY2FsZSgpLT5fX3ZhcmlhYmxlOiAweDgwMGMw
 NzA0MAomX0RlZmF1bHRSdW5lTG9jYWxlOiAweDYwMGVlMAomX0RlZmF1bHRSdW5lTG9jYWxlLT5f
 X3ZhcmlhYmxlOiAweDAKWzFdCl9UaHJlYWRSdW5lTG9jYWxlOiAweDYwMGVlMApfVGhyZWFkUnVu
 ZUxvY2FsZS0+X192YXJpYWJsZTogMHgwCl9fZ2V0Q3VycmVudFJ1bmVMb2NhbGUoKTogMHg2MDBl
 ZTAKX19nZXRDdXJyZW50UnVuZUxvY2FsZSgpLT5fX3ZhcmlhYmxlOiAweDAKJl9EZWZhdWx0UnVu
 ZUxvY2FsZTogMHg2MDBlZTAKJl9EZWZhdWx0UnVuZUxvY2FsZS0+X192YXJpYWJsZTogMHgwClsy
 XQpfVGhyZWFkUnVuZUxvY2FsZTogMHg2MDBlZTAKX1RocmVhZFJ1bmVMb2NhbGUtPl9fdmFyaWFi
 bGU6IDB4MApfX2dldEN1cnJlbnRSdW5lTG9jYWxlKCk6IDB4NjAwZWUwCl9fZ2V0Q3VycmVudFJ1
 bmVMb2NhbGUoKS0+X192YXJpYWJsZTogMHgwCiZfRGVmYXVsdFJ1bmVMb2NhbGU6IDB4NjAwZWUw
 CiZfRGVmYXVsdFJ1bmVMb2NhbGUtPl9fdmFyaWFibGU6IDB4MAoKUHJvZ3JhbSByZWNlaXZlZCBz
 aWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0LgoweDAwMDAwMDA4MDA5MDg4ODAgaW4g
 bWJzbnJ0b3djcyAoKSBmcm9tIC9saWIvbGliYy5zby43CihnZGIpIAo=
 --20cf303f672e1e5ef404f5e92be2--


More information about the freebsd-standards mailing list