From: Jens Rehsack <s...@netbsd.org> --- 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 ofono@ofono.org http://lists.ofono.org/listinfo/ofono