Idiots in Power
Why is it that normal people don't run more successful projects? See this ticket regarding Paludis. Paludis is a C++ replacement for Portage. Portage is a squirrels nest and even though the ebuild system is pretty nice, portage itself is pretty lame.
In the interest of fairness, I would point out: The Paludis site flatly refuses to say anything about the project. Therefore being run by a complete asshole isn't contradictory to any previous statements.
The gist of the ticket is that Paludis doesn't support certain types of parallelism and the developer(s) refuse to do anything sane in order to prevent, notify or clearly document the danger of it. This danger is apparently readily realized by users.
Examples of sanity might be:
Warn people it's not supported.
Make some sort of method for restricting parallel execution.
ADD A NOTE TO A FAQ
What does the Paludis think of a notice about the dangers of parallel runs of the software they publish:
.. raw:: htmlchaoflow: "What about preventing parallel paludis runs or at least a FAQ or some other way of explicitly telling people, that parallel paludis operations are not supported?" | ciaranm: "Preventing parallel runs is a security hole. And an FAQ entry is pointless -- parallel executions are fine so long as they stick to certain operations." | chaoflow: "Wouldn't it be nice to have documented, which operations are fine for parallel execution?" | .. raw:: html
ciaranm: "Not really. If you don't already know, you shouldn't be doing it at all."
This is clearly beyond the scope of Paludis. See this conversation:
.. raw:: htmlchaoflow: "What about preventing parallel paludis runs?" | ciaranm: "Preventing parallel runs is a security hole." | chaoflow: "Could you elaborate on that?" | ciaranm: "It's an inversion. A non-root user can obtain the locks and prevent root from being able to do anything for an arbitrarily long time." .. raw:: html
This stunning display of logic and intellect is what passes for success over at Paludis. Even I can think of a few methods to help prevent this:
Make an override mechanism. Easy enough, right?
Enable super-users to kill the offending process.
Put the lockfile in a secured-location.
Use shared memory, and make use of ipcrm to kill rogue locks.
Observe that a security /hole/ involves some sort of exploitation of a system. A DoS involves prevention of normal operation. This doesn't even make a legitimate DoS.
The stupidity doesn't end there:
.. raw:: htmlchaoflow: "And way way better would be some simple locking inside of paludis preventing bad things from happening." | ciaranm: Paludis is not there to protect you from yourself. .. raw:: html
ciaranm must see this as an incredibly clever way of saying "go f*** yourself.". ciaranm seems to be an incredibly dense idiot. Why is an f'd up system preferable to some logic which may lead to the inconvenience of cleaning up a rogue lock?
Paludis IS a security hole - It just might fuck up your system, if you run it in parallel with itself, but it certainly won't try to tell you that. I am guilty too.