From: Jens Rehsack <[email protected]>
---
src/wsputil.c | 43 ++++++++++++++++++++++++++-----------------
1 Datei geändert, 26 Zeilen hinzugefügt(+), 17 Zeilen entfernt(-)
diff --git a/src/wsputil.c b/src/wsputil.c
index 1b2b2b7..5611ed2 100644
--- a/src/wsputil.c
+++ b/src/wsputil.c
@@ -486,28 +486,37 @@ gboolean wsp_decode_application_id(struct wsp_header_iter
*iter,
const void **out_value)
{
const unsigned char *pdu_val = wsp_header_iter_get_val(iter);
- unsigned int val;
- unsigned int val_len;
- unsigned int i;
- /*
- * Well-known field values MUST be encoded using the
- * compact binary formats
- */
- if (wsp_header_iter_get_val_type(iter) == WSP_VALUE_TYPE_SHORT) {
- val = *pdu_val & 0x7f;
+ if (wsp_header_iter_get_val_type(iter) == WSP_VALUE_TYPE_TEXT) {
+ wsp_header_iter_get_val_len(iter);
+
+ if (out_value)
+ *out_value = pdu_val;
} else {
- val_len = wsp_header_iter_get_val_len(iter);
+ unsigned int val;
- if (val_len > 2)
- return FALSE;
+ /*
+ * Well-known field values MUST be encoded using the
+ * compact binary formats
+ */
+ if (wsp_header_iter_get_val_type(iter) == WSP_VALUE_TYPE_SHORT)
{
+ val = *pdu_val & 0x7f;
+ } else {
+ unsigned int val_len;
+ unsigned int i;
- for (i = 0, val = 0; i < val_len && i < sizeof(val); i++)
- val = (val << 8) | pdu_val[i];
- }
+ val_len = wsp_header_iter_get_val_len(iter);
- if (out_value)
- *out_value = get_text_entry(val, app_id);
+ if (val_len > 2)
+ return FALSE;
+
+ for (i = 0, val = 0; i < val_len && i < sizeof(val);
i++)
+ val = (val << 8) | pdu_val[i];
+ }
+
+ if (out_value)
+ *out_value = get_text_entry(val, app_id);
+ }
return TRUE;
}
--
1.7.10.1
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono