[Swan-dev] coverity warnings: out_struct() and not all fields being filled in
Paul Wouters
paul at nohats.ca
Mon Oct 27 22:15:43 EET 2014
We are seeing a bunch of uninitialised variables errors:
1. libreswan-3.11/programs/pluto/x509more.c:538: error[uninitvar]: Uninitialized variable: cr_hd
1. libreswan-3.11/programs/pluto/x509more.c:480: error[uninitvar]: Uninitialized variable: cr_hd
1. libreswan-3.11/programs/pluto/x509more.c:457: error[uninitvar]: Uninitialized variable: cert_hd
1. libreswan-3.11/programs/pluto/ikev2_spdb_struct.c:88: error[uninitvar]: Uninitialized variable: attr
1. libreswan-3.11/programs/pluto/ikev2_parent.c:1551: error[uninitvar]: Uninitialized variable: cp
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:2800: error[uninitvar]: Uninitialized variable: attrh
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:2342: error[uninitvar]: Uninitialized variable: attrh
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:986: error[uninitvar]: Uninitialized variable: attrh
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:855: error[uninitvar]: Uninitialized variable: attrh
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:752: error[uninitvar]: Uninitialized variable: attrh
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:474: error[uninitvar]: Uninitialized variable: attr
1. libreswan-3.11/programs/pluto/ikev1_xauth.c:429: error[uninitvar]: Uninitialized variable: attrh
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:2735: error[uninitStructMember]: Uninitialized struct member: ah_trans.isat_transnum
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:2735: error[uninitStructMember]: Uninitialized struct member: ah_trans.isat_transid
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:2735: error[uninitStructMember]: Uninitialized struct member: ah_trans.isat_reserved2
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:2735: error[uninitStructMember]: Uninitialized struct member: ah_trans.isat_reserved
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:2735: error[uninitStructMember]: Uninitialized struct member: ah_trans.isat_np
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:2735: error[uninitStructMember]: Uninitialized struct member: ah_trans.isat_length
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:609: error[uninitvar]: Uninitialized variable: attr
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:524: error[uninitvar]: Uninitialized variable: trans
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:324: error[uninitvar]: Uninitialized variable: sa
1. libreswan-3.11/programs/pluto/ikev1_spdb_struct.c:222: error[uninitvar]: Uninitialized variable: attr
I checked two of these (cr_hd and cp) and noticed that indeed we seem to
only partially fill in the struct, before giving it to out_struct:
For example:
struct ikev2_certreq cr_hd;
cr_hd.isacertreq_critical = ISAKMP_PAYLOAD_NONCRITICAL;
cr_hd.isacertreq_np = np;
cr_hd.isacertreq_enc = type;
/* XXX not all fields initialised */
/* build CR header */
if (!out_struct(&cr_hd, &ikev2_certificate_req_desc, outs, &cr_pbs))
return FALSE;
Where struct ikev2_certreq is:
struct ikev2_certreq {
u_int8_t isacertreq_np; /* Next payload */
u_int8_t isacertreq_critical;
u_int16_t isacertreq_length; /* Payload length */
u_int8_t isacertreq_enc; /* encoding type */
};
So in this case, cr_hd.isacertreq_length was not set. The others are
similar.
Paul
More information about the Swan-dev
mailing list