fix rare bug when read bytes < chunksize, but more follows later
commit3af4fa58f60b28cac18d6d1c075ee51054a1f6ba
authorrofl0r <retnyg@gmx.net>
Tue, 20 Mar 2018 04:13:42 +0000 (20 04:13 +0000)
committerrofl0r <retnyg@gmx.net>
Tue, 20 Mar 2018 04:13:42 +0000 (20 04:13 +0000)
tree35aa6eb97e777c636d6bca8ce6474b48951b40ce
parent0c921c1cca60f64c04b87f597cedf8a11edc53be
fix rare bug when read bytes < chunksize, but more follows later

a very spurious bug was encountered, when the last line of input
produced by busybox' ash shell was not processed sometimes.

assuming the complete input is:
line1
line2
line3

which is a total of 18 characters (with the 3 newlines), the first
read would receive only 17 bytes, and the last newline character
was retrieved in a subsequent read.
our code assumed practically that any read would produce chunksize
bytes, unless the end of input was encountered.
in this case stale 6 bytes were still contained in the old buffer,
but the memcpy happened from the chunksize boundary, not from
where the previous read actually stopped.

to debug this issue, the size argument in the read() call was changed
to 17, to reproduce the input chunks.
jobflow.c