sms_decode was never memsetting the returned structure, so if any
optional elements were present in the SMS (e.g. status report) then the
structure was not completely initialized.
if (out->status_report.pi & 0x02) {
if (!next_octet(pdu, len, &offset, &out->status_report.dcs))
return FALSE;
- } else {
- out->status_report.dcs = 0;
}
if (out->status_report.pi & 0x04) {
if (len == 0)
return FALSE;
+ memset(out, 0, sizeof(*out));
+
if (tpdu_len < len) {
if (!sms_decode_address_field(pdu, len, &offset,
TRUE, &out->sc_addr))