Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Sat, 1 Dec 2018 19:02:02 +1100
From: Xan Phung <>
Subject: Re: stdio glitch & questions

> So anyway, I think there are probably some good reasons to do the
> merging in __fwritex rather than in the __stdio_write backend. But it
> should be a lot simpler than what you initially proposed.
> Rich

Thanks for your feedback!  In interest of keeping the proposal as simple as
possible, I've gone with just one extra line of code (see below).  It
simply does copying for  i <= 8.

It works on my initial testing and I'm getting zero lengths in the 2nd
writev iovec (as expected), but I'll test it more in coming week.

size_t __fwritex(const unsigned char *restrict s, size_t l, FILE *restrict


size_t i=0;

if (!f->wend && __towrite(f)) return 0;

if (l > f->wend - f->wpos) return f->write(f, s, l);

if (f->lbf >= 0) {

/* Match /^(.*\n|)/ */

for (i=l; i && s[i-1] != '\n'; i--);

if (i) {

*if (i <= 8) for (; i; i--, l--) *(f->wpos)++ = *s++;*

size_t n = f->write(f, s, i);

if (*!f->wpos ||* n < i) return n;

l -= i;

s += i;



memcpy(f->wpos, s, l);

f->wpos += l;

return l+i;


Content of type "text/html" skipped

Powered by blists - more mailing lists

Your e-mail address:

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.