Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14239

Re: When reading less than wanted characters, "read" does not detect NUL bytes

Path csiph.com!goblin2!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail
From Davide Brini <dave_br@gmx.com>
Newsgroups gnu.bash.bug
Subject Re: When reading less than wanted characters, "read" does not detect NUL bytes
Date Fri, 15 Jun 2018 15:15:23 +0200
Lines 32
Approved bug-bash@gnu.org
Message-ID <mailman.1964.1529068531.1292.bug-bash@gnu.org> (permalink)
References <0Mfn88-1fqxyA1P40-00NBdT@mail.gmx.com> <20180615130746.zrpcsmyuizrrls4t@eeg.ccf.org>
NNTP-Posting-Host lists.gnu.org
Mime-Version 1.0
Content-Type text/plain; charset=US-ASCII
Content-Transfer-Encoding 7bit
X-Trace usenet.stanford.edu 1529068532 7936 208.118.235.17 (15 Jun 2018 13:15:32 GMT)
X-Complaints-To action@cs.stanford.edu
To bug-bash@gnu.org
Envelope-to bug-bash@gnu.org
In-Reply-To <20180615130746.zrpcsmyuizrrls4t@eeg.ccf.org>
X-Mailer Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
X-Provags-ID V03:K1:SmpWR8K2jjQuSFwQ2gsxFMm8I8SwCFjuNZ1O2yE01kdti2oLSrn UGdlHW2I6DNKw5sySUfOdnXRBCElQp3Tj7HwWwQOH1mGtLTzTVunJXFQ79Q4IwUJz2KqRyh IdvnfMre4prquqruahJeruQI/PJ+jgOEvfPceUMuOV4zG3YBEHYVtuTqeAUHTgq65QcSQVi lOkF0240dSVkLKwnbaQkQ==
X-UI-Out-Filterresults notjunk:1;V01:K0:yvTsPQwPF+Y=:4OrY0xJEA070XWxj5G6u+k OnGJER0TbgS/WkKiEayeLaGytn/WP0Ub9O9q8RvEktYZDKp+hPm7AkF18EKUxJu4VtKMuCRkA EaqBSk1URcDI4coC/a9THm9eVS4bOegrZvBa02vR/JoMpinWxOsPqItnNiN6FJfMtv332m6+E k7tsvEUnjYE5CwUaO2sfSKEb1vvYrQdQVsegGk9CcyTbzbcDoz9ooS13EHT8OeRfqVuyKHotP 2wrzOINNAxO905po+2yHu1tBFLDmLkOjruoxtH7vMu8BgFlRm2q0OX2vqSah6BqhD3fxYBUhD 721rNarmPWH+8dU3FbG26m/SjoDFCzk7koDNGjq+KRMLJAB7xJFdAFLf0ZSVtQ44/4kXltBgh n8gbJfXyqXUvbJVqlwWGv6YFW23+/2iHWpGwqKwGHzRb6+0IXgQT+THsKDFWS8iczi5utBXzm eR2UlCbucPCHEyxh2bGs1FMr8bGyvz1MiRdTY5yTOEUIG0eyBVIBd2bq/OHV1SK4HQ8d+miBf heRfJwukQmNxtryY1x4gkDJNNGWzVduLVmXeayajVOCQ591wUxgV/ND7VnjInVovIDWx0I6cS ArD2CgFjAli5S0WcDR/68vtiUn3cLTJIgLT6e4D2ZJMkuRCaAcyf5/063gQ88gO20fENf3tsL iLFH66x6Q9mIcNEOtWgRiQNishNdXeGvAH7zreQFRpj5yRbljLr95ZSsirSDiFYg8uaI3dCZ/ Ff19rmYknzscl9WgxRyEWi4ILcWnXomQXkdrmokkcwv+hDo+jhLHVOVZwNcrrzP+dj9S0wBtX g98PJVr
X-detected-operating-system by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy]
X-Received-From 212.227.15.15
X-BeenThere bug-bash@gnu.org
X-Mailman-Version 2.1.21
Precedence list
List-Id Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org>
List-Unsubscribe <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe>
List-Archive <http://lists.gnu.org/archive/html/bug-bash/>
List-Post <mailto:bug-bash@gnu.org>
List-Help <mailto:bug-bash-request@gnu.org?subject=help>
List-Subscribe <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe>
Xref csiph.com gnu.bash.bug:14239

Show key headers only | View raw


On Fri, 15 Jun 2018 09:07:46 -0400, Greg Wooledge <wooledg@eeg.ccf.org>
wrote:

> On Fri, Jun 15, 2018 at 03:03:21PM +0200, Davide Brini wrote:
> > $ printf 'a\x00\x00bc' | { while IFS= read -d '' -n 2 var; do echo
> > "read: $var, length: ${#var}"; done; } read: a, length: 1
> > read: , length: 0
> > read: bc, length: 2
> > 
> > I would expect there to be another read of length 0 between the "a" and
> > the "bc".  
> 
> Seems correct to me.  You asked it to stop reading when it finds a NUL
> or when it has read 2 characters.  The first time, they both happen at
> the same time, and you end up with "a", and two bytes have been consumed.
> 
> The second time, it happens after reading the NUL byte, so you get "" and
> a total of three bytes have been consumed.
> 
> The third time, you read "bc", and all the bytes have been consumed.

Oh I see, I was misled by the -n1 behavior and thought the delimiter somehow
would be "put back" for the next read, but your explanation makes sense.

So it looks like the only "reliable" way to detect NULs in the input is to
read one character at a time.

Thanks!

-- 
D.

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

Re: When reading less than wanted characters, "read" does not detect NUL bytes Davide Brini <dave_br@gmx.com> - 2018-06-15 15:15 +0200

csiph-web