Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Dec 2017 19:14:49 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 224552] 'od -c' show wrong char when it is a non-printable
Message-ID:  <bug-224552-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D224552

            Bug ID: 224552
           Summary: 'od -c' show wrong char when it is a non-printable
           Product: Base System
           Version: 11.1-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: pru13allan@telia.com

The command 'od -c' show the wrong last character on each line if it is a
non-printable in the current language (LANG)

Tested with LANG=3Dsv_SE.UTF-8 on:

FreeBSD fsbd1 10.3-RELEASE-p24 FreeBSD 10.3-RELEASE-p24 #0: Wed Nov 15 04:5=
7:40
UTC 2017
 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

FreeBSD fbsd2 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:05:=
10
UTC 2017
 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  i386

FreeBSD rpi1 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r320146M: Tue Jun 20 09:5=
9:03
MDT 2017

raspberry@hive.raspbsd.org:/usr/home/brd/rpi3/crochet/work/obj/arm64.aarch6=
4/usr/src/sys/GENERIC
 arm64

Steps to reproduce:

This is OK
[root]# printf 'abcde\345\344\366\374\351\305\304\326\334\311\n' | od -c
0000000    a   b   c   d   e 345 344 366 374 351 305 304 326 334 311  \n

When the string gets longer and 'od' start a new line the last octet get
scrambled.
The '012' should be '311':
[root]# printf 'Xabcde\345\344\366\374\351\305\304\326\334\311\n' | od -c
0000000    X   a   b   c   d   e 345 344 366 374 351 305 304 326 334 012
0000020   \n=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20

When the string get even longer it is obvious that 'od' is copying first ch=
ar
on
second line to last char on first line:
(Last char on first line ('311') should be '334')
[root]# printf 'XYabcde\345\344\366\374\351\305\304\326\334\311\n' | od -c
0000000    X   Y   a   b   c   d   e 345 344 366 374 351 305 304 326 311
0000020  311  \n

If you are on a system other than UTF-8 you can get the same symptoms by
specifying LC_ALL:
printf 'XYabcde\345\344\366\374\351\305\304\326\334\311\n' | LC_ALL=3Den_US=
.UTF-8
od -c

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-224552-8>