[PATCH][ModemManager/libwmc/utils.c] more uml290 magic for ya



Greetings,

I found this monster amidst my packet capture output. It must have
something to do with text messaging because 900080004008 is in there
(00000018 - 00000023 - one of the free text message numbers vzw uses to
send account info, etc). The message was spread across three packets due
to wMaxPacketSize of 0x200:

    00000000: 41 54 2a 57 4d 43 3d c8 56 86 7d 22 7d 20 7d 20
    00000010: 7d 20 7d 20 7d 20 7d 20 39 30 30 30 38 30 30 30
    00000020: 34 30 30 38 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000030: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000040: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000050: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000060: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000070: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000080: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    00000090: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    000000a0: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    000000b0: 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20
    000000c0: 7d 20 7d 20 7d 20 7d 20 7d 24 7d 20 7d 20 7d 20
    000000d0: 31 39 30 33 37 30 32 39 39 32 30 7d 20 7d 20 7d
    000000e0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000f0: 20 7d 20 7d 20 7d 20 7d 20 7d 2a 7d 20 7d 20 7d
    00000100: 20 50 4f 55 4e 44 5f 44 41 54 41 7d 20 7d 20 7d
    00000110: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000120: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000130: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000140: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000150: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000160: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000170: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000180: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000190: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001a0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001b0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001c0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001d0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001e0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001f0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d

    00000000: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000010: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000020: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000030: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000040: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000050: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000060: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000070: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000080: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000090: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000a0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000b0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000c0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000d0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000e0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000f0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000100: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000110: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000120: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000130: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000140: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000150: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000160: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000170: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000180: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000190: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001a0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001b0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001c0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001d0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001e0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000001f0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d

    00000000: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000010: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000020: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000030: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000040: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000050: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000060: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000070: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000080: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    00000090: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000a0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000b0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000c0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000d0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000e0: 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d 20 7d
    000000f0: 20 7d 20 5b 7d 3c 0d

609 0s escaped
3 (< 0x20 !0) escaped
612 total escaped

37 non-zero and non-escaped bytes from c8 to 5b (before the crc bytes)
inclusive

length of message:

before encapsulation 649
after encapsulation 1232

nearly 90% longer after escaping

1232 / 649 = 1.898305085

Perhaps callers of uml290_wmc_encapsulate() should be advised to pass a
buffer about twice the length of the data to be encapsulated by default.

Here's presumably the response, 2.065 seconds later:

    00000000: c8 56 00 00 00 00 30 30 7e

I can email you the capture file if you'd like the context. I don't
think this message is properly formatted for use with git diff so don't
try to push with it. Haven't figgured out that part yet...

diff --git a/libwmc/src/utils.c b/libwmc/src/utils.c
index 36dff6a..059038c 100644
--- a/libwmc/src/utils.c
+++ b/libwmc/src/utils.c
@@ -254,7 +254,7 @@ uml290_wmc_encapsulate (char *inbuf,

     estimated_out_len = cmd_len + strlen (AT_WMC_PREFIX);
     estimated_out_len += 3;  /* CRC + trailer */
-    estimated_out_len += cmd_len * 1.3;  /* escaping */
+    estimated_out_len += cmd_len * 2.0;  /* escaping 2.0 - "Escaped
from Sanity" */
     wmc_return_val_if_fail (outbuf_len > estimated_out_len, 0);

     memcpy (outbuf, AT_WMC_PREFIX, strlen (AT_WMC_PREFIX));


Miguel


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]