summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-06-01 10:07:18 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-06-01 10:07:18 -0500
commit4638d3ad831f7bf11fcd5a0f951d9c4eae475257 (patch)
tree053b6cb32a3b91cbe773664a16f780f868f95dab
parent103961c71b0bc74456fa149d5d6761cd3d97b6d4 (diff)
downloadofono-4638d3ad831f7bf11fcd5a0f951d9c4eae475257.tar.bz2
smsutil: Don't overflow signed ints
We were overflowing the datatype which was causing the 31st segments to be prepended at position 0. This resulted in (very) long messages being improperly concatenated
-rw-r--r--src/smsutil.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/smsutil.c b/src/smsutil.c
index 62d8ab28..30c12506 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -2483,16 +2483,16 @@ static GSList *sms_assembly_add_fragment_backup(struct sms_assembly *assembly,
guint16 ref, guint8 max, guint8 seq,
gboolean backup)
{
- int offset = seq / 32;
- int bit = 1 << (seq % 32);
+ unsigned int offset = seq / 32;
+ unsigned int bit = 1 << (seq % 32);
GSList *l;
GSList *prev;
struct sms *newsms;
struct sms_assembly_node *node;
GSList *completed;
- int position;
- int i;
- int j;
+ unsigned int position;
+ unsigned int i;
+ unsigned int j;
prev = NULL;