On Tue, May 09, 2006 at 02:50:39PM +0200, Andrija Petrovic wrote:
> I'm not quite sure that your proposal will nicely fix the thing:
> 
> 1. msg->sms.receiver should be allowed to be shorter than 6 digits, why
> not...
well, if you'd like to send messages to vas numbers... this was which i wanted 
it not to do.
you can make the bill rather high in a verry short amount of time that way.


> 2. as far as at2_format_address_field is concerned, digits may be hex
> 
> So, why not use the patch I provided? It's simple and safe... If
> at2_format_address_field fails, it will return NULL, that will be catched
> inside the caller function at2_pdu_encode, so it will return NULL as well,
> so at2_send_one_message (currently) will generate the error(2, ...) message
> and safely return.
> 
> Anyway, AFAIC, I'd let the at2_format_address_field perform the sanity
> checks and (possibly) the very conversion, and not perfom any ad-hoc checks
> in outer functions.
you may be right at this point.

> 
> Now, about destroying the message, take a look at how you get to the
> at2_send_one_message:
> at2_send_messages removes the message from the queue and calls
> at2_send_one_message.
> It seems that no destroying of the received pointer should be done at all,
> correct me if I'm wrong...
well, thats exactly what i was asking... 
> 
> Andrija
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Behalf Of Wilfried Goesgens
> Sent: Tuesday, May 09, 2006 2:21 PM
> To: devel@kannel.org
> Subject: Re: smsc_at crashes on non-numeric SMS destination
> 
> 
> On Tue, May 09, 2006 at 02:07:42PM +0200, Andrija Petrovic wrote:
> > smsc_at does not check the digits of the address field in the function
> > at2_format_address_field
> > So, if the recipient's address contains a non-numeric string (e.g. 'Info
> > Service'), and that's quite possible,
> > the octstr assertion crashes the bearerbox during octstr_append_char.
> >
> > Added sanity check on digits before calling the octstr_append_char.
> >
> > cheers,
> > Andrija
> 
> 
> i've added the following to send_one_message to fix this:
> 
>       if ((octstr_len(msg->sms.receiver)<6)||
>               (octstr_parse_double(&number, msg->sms.receiver,0)==-1))
>               {/* ok. this message is faulty. no shortcodes or non number 
> targets */
>             error(0, "AT4[%s]: bad receiver %s. text %s dropping!",
>                                 octstr_get_cstr(privdata->name),
>                                 octstr_get_cstr(msg->sms.receiver),
>                                 octstr_get_cstr(msg->sms.msgdata));
>                       if( DLR_IS_ENABLED_DEVICE(msg->sms.dlr_mask))
>                               bb_smscconn_send_failed(privdata->conn, msg,
>                                                                               
> SMSCCONN_FAILED_MALFORMED, octstr_create("MALFORMED"));
>                       return 0;
> 
>               }
> 
> is it correct, that the message is destroyed inside bb_smscconn_send_failed?
> if i destroy it after that, i get trouble...
> 
> 
> Wilfried G?sgens
> 
> 
> 
> 
> 
> 
> 

-- 
Wilfried G?sgens
Newthinking Communications

Reply via email to