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


Groups > gnu.bash.bug > #14661

Re: bash sockets: printf \x0a does TCP fragmentation

From Chet Ramey <chet.ramey@case.edu>
Newsgroups gnu.bash.bug
Subject Re: bash sockets: printf \x0a does TCP fragmentation
Date 2018-09-25 09:48 -0400
Message-ID <mailman.1297.1537883316.1284.bug-bash@gnu.org> (permalink)
References (1 earlier) <20180921231101307758654@bob.proulx.com> <714e1ba0-0052-2f2b-676d-778f2b7129c1@testssl.sh> <20180924130533.4ufaxypoelta6f7n@eeg.ccf.org> <5BAA26C6.10906@tlinx.org> <20180925122541.6ik7q3icf22oxvny@eeg.ccf.org>

Show all headers | View raw


On 9/25/18 8:25 AM, Greg Wooledge wrote:
> On Tue, Sep 25, 2018 at 05:15:02AM -0700, L A Walsh wrote:
>> On 9/24/2018 6:05 AM, Greg Wooledge wrote:
>>> On Sat, Sep 22, 2018 at 11:50:17AM +0200, dirk+bash@testssl.sh wrote:
>>>> On 9/22/18 7:30 AM, Bob Proulx wrote:
>>>>> dirk+bash@testssl.sh wrote:
>>>>>> printf -- "$data" >&5 2>/dev/null
>>>>> What happens if $data contains % format strings?  What happens if the
>>>>> format contains a sequence such as \c?  This looks problematic.  This
>>>>> is not a safe programming proctice.
>>>
>>> Looking ONLY at this one line, there is an obvious bug, which Bob has
>>> pointed out.  It should be
>>>
>>> printf %s "$data" >&5 2>/dev/null
>> ----
>>    This brings to mind a consideration:
>> As %s says to print a string of data (presumably not
>> including a NUL byte), then what happens if "$data" is
>> a paragraph of text with embedded newlines.  In that case,
>> it sounds like bash might break apart the single printf
>> output into smaller packets rather than transmitting the
>> entirety of "$data" in 1 write (presuming it is less than
>> the maximum data size for a network packet).
> 
> Yes, I'm sure it does.  In fact, bash's printf and echo builtins are
> already known to use multiple calls to write() even when sockets and
> newlines are not involved.

Yes, bash does line buffering and provides a buffer for stdout and
stderr. This has been noted here previously and isn't specific to
printf or echo.


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
		 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/

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


Thread

Re: bash sockets: printf \x0a does TCP fragmentation Chet Ramey <chet.ramey@case.edu> - 2018-09-25 09:48 -0400

csiph-web