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

Reply via email to