| From: Andrew Cagney <andrew.cag...@gmail.com>

| > Did you check that the very early calls to lsw_abort can safely be
| > replaced by passerts?  These are the ones in plutomain.c. (I have
| > not.)  Logging may not be initialized.

What I meant: they were JUST calls to abort.  In FreeS/WAN.

| Only in the sense that I ran the testsuite.

That will never cause those asserts to fire:

                passert(open("/dev/null", O_RDONLY) == 0);
                passert(dup2(0, 1) == 1);
                passert(log_to_stderr || dup2(0, 2) == 2);

Those only fire when something is seriously wrong with the environment.

|    final_breath = TRUE;

s/final_breath/dying_breath/

================

passert is modelled on assert(3).  It could be a macro that does
nothing (not even evaluating its argument).  So depending on a
side-effect of argument evaluation is a no-no.

I'd say that the original FreeS/WAN code is better than all its
successors:

                if (open("/dev/null", O_RDONLY) != 0)
                        abort();
                if (dup2(0, 1) != 1)
                        abort();
                if (!log_to_stderr && dup2(0, 2) != 2)
                        abort();

Since these cannot fail in a normal environment, it is good to not
depend on much of the environment when failure is detected (passert
does, lsw_abort does, abort does not).
_______________________________________________
Swan-dev mailing list
Swan-dev@lists.libreswan.org
https://lists.libreswan.org/mailman/listinfo/swan-dev

Reply via email to