[cfe-dev] [PATCH] [libc++] Ensure std::getline always 0-terminates string.

Reimar Döffinger via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 7 23:59:01 PDT 2017


Could someone please take care of and clean up your contribution documentation?
This is the only project I have heard of where patches are discussed on the commits list (some seriously bad naming), that really should be in BOLD but instead https://libcxx.llvm.org/ only links to the subscription page for cfe-dev, https://llvm.org/docs/DeveloperPolicy.html is rather wishy-washy about it, and the bugzilla doesn't even accept account creation without going via email.
I've seen one-person projects handling it better and not having the gall on top of it to write in the documentation as number 2 goal "Make life as simple and easy for contributors as possible."
I mean seriously, gcc with its copyright assignment hassle is not the reference to shoot for...

On 08.09.2017, at 08:38, Shoaib Meenai <smeenai at fb.com> wrote:

> Patches should go to cfe-commits, not cfe-dev. You can also use Phabricator.
> 
> On 9/7/17, 11:17 PM, "cfe-dev on behalf of Reimar Döffinger via cfe-dev" <cfe-dev-bounces at lists.llvm.org on behalf of cfe-dev at lists.llvm.org> wrote:
> 
>    If the sentinel failed (e.g. due to having reached
>    EOF before) or an exception was caught it failed to
>    do that.
>    While it seems (unfortunately!) not required by the
>    specification, libstdc++ does 0-terminate and not
>    doing so risks creating security issues in applications.
>    ---
>     include/istream | 6 ++++--
>     1 file changed, 4 insertions(+), 2 deletions(-)
> 
>    diff --git a/include/istream b/include/istream
>    index 0b8e05d95..5c73df38f 100644
>    --- a/include/istream
>    +++ b/include/istream
>    @@ -1069,16 +1069,18 @@ basic_istream<_CharT, _Traits>::getline(char_type* __s, streamsize __n, char_typ
>                     this->rdbuf()->sbumpc();
>                     ++__gc_;
>                 }
>    -            if (__n > 0)
>    -                *__s = char_type();
>                 if (__gc_ == 0)
>                    __err |= ios_base::failbit;
>                 this->setstate(__err);
>             }
>    +        if (__n > 0)
>    +            *__s = char_type();
>     #ifndef _LIBCPP_NO_EXCEPTIONS
>         }
>         catch (...)
>         {
>    +        if (__n > 0)
>    +            *__s = char_type();
>             this->__set_badbit_and_consider_rethrow();
>         }
>     #endif  // _LIBCPP_NO_EXCEPTIONS
>    -- 
>    2.14.1
> 
>    _______________________________________________
>    cfe-dev mailing list
>    cfe-dev at lists.llvm.org
>    https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=95AJ9O-xGF4otV8l7rSJB5hfLhWipgF4HSBqW_3JVTE&s=rySnF8MixjXB7ean9Q0m80CHp4mVxvRnvCj3g6O_hSU&e= 
> 
> 



More information about the cfe-dev mailing list