# HG changeset patch # User Mychaela Falconia # Date 1693553631 0 # Node ID 2969032bdfac0b434e0c81bf344b8506ece6069b # Parent a96cb97b66a221425071357950bfeb616c1ec9c7 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. diff -r a96cb97b66a2 -r 2969032bdfac uptools/atcmd/smsend_main.c --- 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) diff -r a96cb97b66a2 -r 2969032bdfac uptools/atcmd/smsend_multmain.c --- 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); }