From 198969bb4b2883530c6865f0c6f2afb574cead56 Mon Sep 17 00:00:00 2001 From: Torrey Searle Date: Tue, 24 Feb 2015 16:52:20 +0100 Subject: [PATCH] modules/sipt: fix size check for optional pointer --- modules/sipt/ss7_parser.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/sipt/ss7_parser.c b/modules/sipt/ss7_parser.c index 9315e43d448..e7554f832f6 100644 --- a/modules/sipt/ss7_parser.c +++ b/modules/sipt/ss7_parser.c @@ -316,13 +316,14 @@ int isup_update_bci_1(struct sdp_mangler * mangle, int charge_indicator, int cal return 1; } - if (len < sizeof(struct isup_acm_fixed)) + // add minus 1 because the optinal pointer is optional + if (len < sizeof(struct isup_acm_fixed) -1 ) return -1; bci = (charge_indicator & 0x3) | ((called_status & 0x3)<<2) | ((called_category & 0x3)<<4) | ((e2e_indicator & 0x3)<<6); - add_body_segment(mangle, offsetof(struct isup_acm_fixed, backwards_call_ind), &bci, 1); + replace_body_segment(mangle, offsetof(struct isup_acm_fixed, backwards_call_ind), 1, &bci, 1); return sizeof(struct isup_acm_fixed); }