Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Pine.BSM.4.64L.2406170426130.32337@herc.mirbsd.org>
Date: Mon, 17 Jun 2024 04:29:35 +0000 (UTC)
From: Thorsten Glaser <tg@...bsd.de>
To: musl@...ts.openwall.com
Subject: Re: Question about flexible array

樊鹏 dixit:

>The reason is a difference between gcc and g++:
>
>Flexible array members are not officially part of C++.
>Flexible array members were officially standardized in C99.

>/usr/include/bits/signal.h:35:23: error: flexible array member 'mcontext_t::__extcontext' not at end of 'struct tbb::detail::r1::coroutine_type'

No, that’s not the problem here (the compiler allows that).

The problem is this, in oneTBB itself:

    struct coroutine_type {
        coroutine_type() : my_context(), my_stack(), my_stack_size() {}
        ucontext_t my_context;
        void* my_stack;
        std::size_t my_stack_size;
    };

There’s a double problem here. One is the ordering. Changing to…

    struct coroutine_type {
        coroutine_type() : my_context(), my_stack(), my_stack_size() {}
        void* my_stack;
        std::size_t my_stack_size;
        ucontext_t my_context;
    };

… would fix that, but I *bet* that the surrounding code allocates
its struct coroutine_type by a fixed size and copies my_context
by sizeof(ucontext_t), which necessarily does not include the FAM.

I’m not sure if it is even permissible for ucontext_t to contain
a FAM; perhaps instead you need to figure out the exact or a
maximum size and change the declaration (and the ABI, most likely)
to that?

Otherwise, all that’s left is to forbid userspace the copying of
ucontext_t, which probably won’t fly…

bye,
//mirabilos
-- 
“ah that reminds me, thanks for the stellar entertainment that you and certain
other people provide on the Debian mailing lists │ sole reason I subscribed to
them (I'm not using Debian anywhere) is the entertainment factor │ Debian does
not strike me as a place for good humour, much less German admin-style humour”

Powered by blists - more mailing lists

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