stkutil: Don't include USSD text unless needed
authorDenis Kenzior <denkenz@gmail.com>
Wed, 15 Sep 2010 16:58:00 +0000 (11:58 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Wed, 15 Sep 2010 16:58:00 +0000 (11:58 -0500)
src/stkutil.c
src/stkutil.h

index 3cfe06a..cdd6b4e 100644 (file)
@@ -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);
index c432df8..36b18f0 100644 (file)
@@ -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;