diff --git a/src/stkutil.c b/src/stkutil.c index 3cfe06ae..cdd6b4e9 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -4177,11 +4177,19 @@ static gboolean build_dataobj_ussd_text(struct stk_tlv_builder *tlv, const struct stk_ussd_text *text = data; unsigned char tag = STK_DATA_OBJECT_TYPE_TEXT; - stk_tlv_builder_open_container(tlv, cr, tag, TRUE); + if (text->has_text == FALSE) + return TRUE; + + if (stk_tlv_builder_open_container(tlv, cr, tag, TRUE) != TRUE) + return FALSE; if (text->len > 0) { - stk_tlv_builder_append_byte(tlv, text->dcs); - stk_tlv_builder_append_bytes(tlv, text->text, text->len); + if (stk_tlv_builder_append_byte(tlv, text->dcs) != TRUE) + return FALSE; + + if (stk_tlv_builder_append_bytes(tlv, text->text, + text->len) != TRUE) + return FALSE; } return stk_tlv_builder_close_container(tlv); diff --git a/src/stkutil.h b/src/stkutil.h index c432df87..36b18f0c 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -1377,6 +1377,7 @@ struct stk_answer_text { }; struct stk_ussd_text { + ofono_bool_t has_text; const unsigned char *text; int dcs; int len;