| commit c1f6a2bf6041abb5df918fcfd3fa118bb7c761c7
| Author: Paul Wouters <[email protected]>
| Date:  Tue Dec 4 12:34:57 2018 -0500
| 
|     libswan: lswlog_proposal_info() do not set variable sep when no longer 
used afterwards

| commit f0b2361d0e6b20e22c7b5fe77dfe8cf1555901bc
| Author: Paul Wouters <[email protected]>
| Date:   Tue Dec 4 12:33:29 2018 -0500
| 
|     pluto: ikev2_decode_peer_id_and_certs_counted() don't set c when no 
longer used

| commit f48425918e69c15edd8d526cbe4b396373d010d3
| Author: Paul Wouters <[email protected]>
| Date:   Tue Dec 4 12:30:51 2018 -0500
| 
|     pluto: calc_skeyseed_v2() don't set next_byte when it won't be used 
anymore

| commit ce10f9bbaa4f3e0c1926e1a87c75d336b922aa38
| Author: Paul Wouters <[email protected]>
| Date:   Tue Dec 4 11:30:01 2018 -0500
| 
|     pluto: initiate_ondemand_body() fix unused setting of loggedit

In each of these cases, the abstraction / invariant required these 
assignments.

Recommendation: restore these assignments.

Fallback recommendation: in place of these assignments, put a warning
comment to the effect that the invariant is no longer maintained.

The code works fine without these assignments.  But if you add more
code to one of these routines, the broken abstraction may cause the
code fail.  Formally: each assignment was required to maintain an
invariant.

Here's the tradeoff:

With assignments

- lint-like programs complain about a useless assignment (that's why I
  previously added an explanatory comment to each of these assignments)

Without assignment

- code modified in the obvious way will fail


Invariants:

c1f6a2bf6041abb5df918fcfd3fa118bb7c761c7:

        "sep" indicates what string needs to precede the next chunk
        (if any) to be added to the log line.

c1f6a2bf6041abb5df918fcfd3fa118bb7c761c7

        next_byte is the index of the next byte of keying material to
        use.

ce10f9bbaa4f3e0c1926e1a87c75d336b922aa38

        loggedit ("logged it", not "log edit") indicates whether
        demandbuf has been logged.

If an invaraint is not obvious to the reader (I think that it is),
then a comment describing the invariant should be added at the
variable's definition.
_______________________________________________
Swan-dev mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan-dev

Reply via email to