From 173c6798d63c56c45110127189fb5a1db197fbd1 Mon Sep 17 00:00:00 2001 From: Yang Gu Date: Tue, 30 Nov 2010 18:44:48 +0800 Subject: smsutil: Change the range of time zone --- src/smsutil.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/smsutil.c b/src/smsutil.c index 3f897e40..3153a37b 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -51,6 +51,13 @@ #define SMS_ADDR_FMT "%24[0-9A-F]" #define SMS_MSGID_FMT "%40[0-9A-F]" +/* + * Time zone accounts for daylight saving time, and the two extreme time + * zones on earth are UTC-12 and UTC+14. + */ +#define MAX_TIMEZONE 56 +#define MIN_TIMEZONE -48 + static GSList *sms_assembly_add_fragment_backup(struct sms_assembly *assembly, const struct sms *sms, time_t ts, const struct sms_address *addr, @@ -344,7 +351,7 @@ gboolean sms_encode_scts(const struct sms_scts *in, unsigned char *pdu, if (in->second > 59) return FALSE; - if ((in->timezone > 12*4-1) || (in->timezone < -(12*4-1))) + if ((in->timezone > MAX_TIMEZONE) || (in->timezone < MIN_TIMEZONE)) return FALSE; pdu = pdu + *offset; @@ -431,7 +438,7 @@ gboolean sms_decode_scts(const unsigned char *pdu, int len, if (oct & 0x08) out->timezone = out->timezone * -1; - if ((out->timezone > 12*4-1) || (out->timezone < -(12*4-1))) + if ((out->timezone > MAX_TIMEZONE) || (out->timezone < MIN_TIMEZONE)) return FALSE; return TRUE; -- cgit v1.2.3