FreeCalypso > hg > freecalypso-tools
changeset 965:2969032bdfac
fcup-smsend[mult]: fix buglet in K&R C NULL pointer passing
The only 100% safe way to pass a NULL pointer as a function argument
in K&R C is to cast 0 to a pointer type; failing to do so may cause
mysterious bugs (invalid stack frames or garbage in argument registers)
on 64-bit machines. This issue has already been fixed in most of
FC host tools, but I just found some missed spots: passing of NULL UDH
to PDU encoding functions in fcup-smsend[mult] in the case of single
(not concatenated) SMS.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 01 Sep 2023 07:33:51 +0000 |
parents | a96cb97b66a2 |
children | ec7e23d5151f |
files | uptools/atcmd/smsend_main.c uptools/atcmd/smsend_multmain.c |
diffstat | 2 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/uptools/atcmd/smsend_main.c Thu Aug 31 19:38:18 2023 +0000 +++ b/uptools/atcmd/smsend_main.c Fri Sep 01 07:33:51 2023 +0000 @@ -188,7 +188,8 @@ if (msgtext_gsmlen <= 160) { common_init(); prep_for_pdu_mode(); - send_in_pdu_mode(dest_addr, msgtext_gsm7, msgtext_gsmlen, 0, 0); + send_in_pdu_mode(dest_addr, msgtext_gsm7, msgtext_gsmlen, + (u_char *) 0, 0); if (sms_write_mode == 1) sendafterwr_process(); if (concat_enable && !concat_quiet) @@ -249,7 +250,8 @@ if (msgtext_unilen <= 70) { common_init(); prep_for_pdu_mode(); - send_pdu_ucs2(dest_addr, msgtext_uni, msgtext_unilen, 0, 0); + send_pdu_ucs2(dest_addr, msgtext_uni, msgtext_unilen, + (u_char *) 0, 0); if (sms_write_mode == 1) sendafterwr_process(); if (concat_enable && !concat_quiet)
--- a/uptools/atcmd/smsend_multmain.c Thu Aug 31 19:38:18 2023 +0000 +++ b/uptools/atcmd/smsend_multmain.c Fri Sep 01 07:33:51 2023 +0000 @@ -151,7 +151,8 @@ if (rc == -2) goto toolong; init_send_process(); - send_in_pdu_mode(dest_addr, msgtext_gsm7, msgtext_gsmlen, 0, 0); + send_in_pdu_mode(dest_addr, msgtext_gsm7, msgtext_gsmlen, + (u_char *) 0, 0); return(0); } @@ -174,7 +175,7 @@ exit(ERROR_USAGE); } init_send_process(); - send_pdu_ucs2(dest_addr, msgtext_uni, msgtext_unilen, 0, 0); + send_pdu_ucs2(dest_addr, msgtext_uni, msgtext_unilen, (u_char *) 0, 0); return(0); }