Fix improper length of sms message stored in User Data Length field
[project/uqmi.git] / commands-wms.c
index 6ac52eb..2e4e08f 100644 (file)
@@ -70,6 +70,7 @@ pdu_decode_7bit_char(char *dest, int len, unsigned char c, bool *escape)
        fprintf(stderr, " %02x", c);
        dest += len;
        if (*escape) {
+               *escape = false;
                switch(c) {
                case 0x0A:
                        *dest = 0x0C;
@@ -559,7 +560,7 @@ pdu_encode_number(unsigned char *dest, const char *str, bool smsc)
        }
 
        for (i = 0; str[i]; i++) {
-               if (str[i] >= '0' || str[i] <= '9')
+               if (str[i] >= '0' && str[i] <= '9')
                        continue;
 
                ascii = true;
@@ -590,7 +591,7 @@ pdu_encode_data(unsigned char *dest, const char *str)
 
        dest[len++] = 0;
        len += pdu_encode_7bit_str(&dest[len], str);
-       dest[0] = len - 1;
+       dest[0] = strlen(str);
 
        return len;
 }