[BusyBox 0000615]: sed convert 0x00 to 0x0a
bugs at busybox.net
bugs at busybox.net
Mon Jan 9 18:15:10 UTC 2006
A NOTE has been added to this issue.
======================================================================
http://busybox.net/bugs/view.php?id=615
======================================================================
Reported By: robang74
Assigned To: BusyBox
======================================================================
Project: BusyBox
Issue ID: 615
Category: Other
Reproducibility: always
Severity: major
Priority: normal
Status: assigned
======================================================================
Date Submitted: 12-28-2005 01:26 PST
Last Modified: 01-09-2006 10:15 PST
======================================================================
Summary: sed convert 0x00 to 0x0a
Description:
bash-3.00# dd if=/dev/zero bs=1k count=1 >/tmp/test
1+0 records in
1+0 records out
bash-3.00# echo ciao>>/tmp/test
bash-3.00# dd if=/dev/zero bs=1k count=1 >>/tmp/test
1+0 records in
1+0 records out
bash-3.00# cat /tmp/test | sed -e "s/ciao/miao/g" >/tmp/test2
bash-3.00# wc -l /tmp/test
1 /tmp/test
bash-3.00# wc -l /tmp/test2
2048 /tmp/test2
======================================================================
----------------------------------------------------------------------
robang74 - 12-28-05 03:18
----------------------------------------------------------------------
sed loose the last 0x00 if it exist:
bash-3.00# ls -al /tmp/test*
-rw-r--r-- 1 0 0 2053 Dec 28 11:16 /tmp/test
-rw-r--r-- 1 0 0 2052 Dec 28 11:16 /tmp/test2
AFTER PATCH:
/ # dd if=/dev/zero bs=1k count=1 >/tmp/test
1+0 records in
1+0 records out
/ # echo ciao>>/tmp/test
/ # dd if=/dev/zero bs=1k count=1 >>/tmp/test
1+0 records in
1+0 records out
/ # cat /tmp/test | sed -e "s/ciao/miao/g" >/tmp/test2
/ # wc -l /tmp/test2
1 /tmp/test2
/ # wc -l /tmp/test
1 /tmp/test
/ # ls -al /tmp/test*
-rw-r--r-- 1 0 0 2053 Dec 28 11:17 /tmp/test
-rw-r--r-- 1 0 0 2053 Dec 28 11:17 /tmp/test2
----------------------------------------------------------------------
landley - 01-01-06 22:47
----------------------------------------------------------------------
Hmmm... Tricky dealing with embedded nulls when C usually considers null
to be an end of string indicator.
Your fix causes problems in other contexts. It was outputting a newline
because there are times when that is appropriate, and this would output a
null then. Something like:
echo -n thingy > one
echo -n again > two
sed "s/i/z/" one two > three
The output should be "thzngy\nagazn" and I think it would be
"thzngy\0agazn". Not that I've tested it just now.
I'm trying to get 1.1.0 out this friday. Not sure I'll get to this before
then...
----------------------------------------------------------------------
robang74 - 01-02-06 01:25
----------------------------------------------------------------------
patch n.2 fix the problem of newline in more files
[roberto at wsraf big]$ patch -p0 < sed_2.patch
patching file busybox-1.01/editors/sed.c
[roberto at wsraf busybox-1.01]$ make menuconfig && make
[roberto at wsraf busybox-1.01]$ echo -n thingy > one
[roberto at wsraf busybox-1.01]$ echo -n again > two
[roberto at wsraf busybox-1.01]$ sed "s/i/z/" one two > three
[roberto at wsraf busybox-1.01]$ ./busybox sed "s/i/z/" one two > four
[roberto at wsraf busybox-1.01_sed2]$ cat three
thzngy
agazn[roberto at wsraf busybox-1.01_sed2]$ cat four
thzngy
agazn[roberto at wsraf busybox-1.01_sed2]$
----------------------------------------------------------------------
landley - 01-08-06 11:34
----------------------------------------------------------------------
I tried a slightly cleaned up version of the second patch and it caused two
more busybox tests to fail.
To see the specific failures, cd testsuite and "./runtest -v sed". I
might get around to looking at it some more today, if so I'll apply the
result and close out the bug.
Rob
----------------------------------------------------------------------
robang74 - 01-09-06 03:30
----------------------------------------------------------------------
AFTER PATCH n.3 sed fails the same testa as before
[roberto at wsraf testsuite]$ ./runtest sed | grep FAIL
FAIL: sed s//g (exhaustive)
FAIL: sed n (flushes pattern space, terminates early)
FAIL: sed N (doesn't flush pattern space when terminating)
BUT passes the new one
[roberto at wsraf testsuite]$ ./runtest sed | grep binary
PASS: sed s onto a binary input (with zeros)
----------------------------------------------------------------------
robang74 - 01-09-06 10:15
----------------------------------------------------------------------
svn 13198 with sed_3 patch applied, defconfig
[roberto at wsraf busybox_sed3]$ size busybox
text data bss dec hex filename
236511 2220 28484 267215 413cf busybox
svn 13201 original, defconfig
[roberto at wsraf busybox]$ size busybox
text data bss dec hex filename
236527 2156 28548 267231 413df busybox
Between 13198 and 13201 size grows 15 bytes more tham sed_3 patch,
at least on my WS but I have gcc 4.0 (good or bad, so it is).
Issue History
Date Modified Username Field Change
======================================================================
12-28-05 01:26 robang74 New Issue
12-28-05 01:26 robang74 Status new => assigned
12-28-05 01:26 robang74 Assigned To => BusyBox
12-28-05 01:26 robang74 Issue Monitored: robang74
12-28-05 03:18 robang74 Note Added: 0000821
12-28-05 03:18 robang74 File Added: sed.diff
01-01-06 22:47 landley Note Added: 0000835
01-02-06 01:25 robang74 Note Added: 0000836
01-02-06 01:25 robang74 File Added: sed_2.patch
01-08-06 11:34 landley Note Added: 0000873
01-09-06 03:29 robang74 Note Added: 0000886
01-09-06 03:30 robang74 Note Edited: 0000886
01-09-06 03:54 robang74 File Added: sed_3.patch
01-09-06 10:15 robang74 Note Added: 0000890
======================================================================
More information about the busybox-cvs
mailing list