On Sat, Aug 29, 2015 at 05:02:33PM -0600, Theo de Raadt wrote:
> It really does not matter.  Coder's choice.  The result is the same.
> You could hunt them all down, change them all, save a few code bytes,
> but don't you dare introduce any bugs...

The main function is called by crt0 like
    exit(main(argc, argv, envp));

Which means that "return 0;" and "exit(0);" in main lead to the same
result.

But there is a subtle difference.

If main calls exit, its own stack protector will never be validated,
which means that a previous overflow of main's stack is not spotted.
"return" on the other hand would trigger the machine code to check.

I would prefer a proper return. Who knows if we spot an issue?  But on
the other hand, take Theo's statement into consideration:

> but don't you dare introduce any bugs...


Tobias

Reply via email to