3 ms·
I am not an expert on the field. But | means or and ^ means execute. In the traditional W(rite)|(or)E(xecute) model, the processes can both write and execute i
by terminalcommand 10y ago
I am not an expert on the field. But | means or and ^ means execute.
In the traditional W(rite)|(or)E(xecute) model, the processes can both write and execute instructions in their address space in memory. I might be wrong but I think this could result in security leaks, because you cannot determine what the code evolves into at execution time.
W(rite)^(xor)E(xecute) model doesn't allow the processes to write AND execute instructions at the same time.
The wikipedia page states:
W^X requires using the CS code segment limit as a "line in the sand",
a point in the address space above which execution is not permitted and data is located,
and below which it is allowed and executable pages are placed.
This means using W^X is an improvement for security, but it's hard to adapt to from a technical viewpoint and limits your computer's ability in meta-programming.
For further information:
https://en.wikipedia.org/wiki/W%5EX https://en.wikipedia.org/wiki/W%5EX
http://marc.info/?l=openbsd-misc&m=105056000801065 http://marc.info/?l=openbsd-misc&m=105056000801065
Disclaimer: I myself am a beginner in the field. Apologies for oversimplification and possible faulty assessments.