head 1.1; access; symbols; locks; strict; comment @ * @; 1.1 date 2026.11.09.05.37.19; author jnemeth; state Exp; branches; next ; commitid nfklAD0yCz3anK2H; desc @@ 1.1 log @comms/asterisk24: import asterisk-24.0.0 Asterisk is a complete PBX in software. It provides all of the features you would expect from a PBX and more. Asterisk does voice over IP in three protocols, and can interoperate with almost all standards-based telephony equipment using relatively inexpensive hardware. Asterisk provides Voicemail services with Directory, Call Conferencing, Interactive Voice Response, Call Queuing. It has support for three-way calling, caller ID services, ADSI, SIP and H.323 (as both client and gateway). This is a Long Term Support version. It is scheduled to go to security fixes only on October 15th, 2030, and EOL on October 15th, 2031. See here for more information about Asterisk versions: https://docs.asterisk.org/About-the-Project/Asterisk-Versions/ @ text @$NetBSD: patch-apps_app__sms.c,v 1.1 2025/10/27 06:58:37 jnemeth Exp $ --- apps/app_sms.c.orig 2018-05-01 20:12:26.000000000 +0000 +++ apps/app_sms.c @@@@ -291,7 +291,7 @@@@ static void numcpy(char *d, char *s) *d++ = *s++; } while (*s) { - if (isdigit(*s)) { + if (isdigit((unsigned char)*s)) { *d++ = *s; } s++; @@@@ -557,7 +557,7 @@@@ static void packdate(unsigned char *o, t int z; ast_localtime(&topack, &t, NULL); -#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__) || defined(__CYGWIN__) +#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__) || defined(__CYGWIN__) || defined(__DragonFly__) z = -t.tm_gmtoff / 60 / 15; #else z = timezone / 60 / 15; @@@@ -754,7 +754,7 @@@@ static unsigned char packaddress(unsigne o[1] = 0x81; } for ( ; *i ; i++) { - if (!isdigit(*i)) { /* ignore non-digits */ + if (!isdigit((unsigned char)*i)) { /* ignore non-digits */ continue; } if (o[0] & 1) { @@@@ -849,11 +849,11 @@@@ static void sms_readfile(sms_t * h, char if (!*p || *p == ';') { continue; /* blank line or comment, ignore */ } - while (isalnum(*p)) { - *p = tolower (*p); + while (isalnum((unsigned char)*p)) { + *p = tolower ((unsigned char)*p); p++; } - while (isspace (*p)) { + while (isspace ((unsigned char)*p)) { *p++ = 0; } if (*p == '=') { @@@@ -869,7 +869,7 @@@@ static void sms_readfile(sms_t * h, char ast_log(LOG_WARNING, "UD too long in %s\n", fn); } } else { - while (isspace (*p)) { + while (isspace ((unsigned char)*p)) { p++; } if (!strcmp(line, "oa") && strlen(p) < sizeof(h->oa)) { @@@@ -917,11 +917,11 @@@@ static void sms_readfile(sms_t * h, char if (!strcmp(line, "ud")) { /* user data */ int o = 0; while (*p && o < SMSLEN) { - if (isxdigit(*p) && isxdigit(p[1]) && isxdigit(p[2]) && isxdigit(p[3])) { + if (isxdigit((unsigned char)*p) && isxdigit((unsigned char)p[1]) && isxdigit((unsigned char)p[2]) && isxdigit((unsigned char)p[3])) { h->ud[o++] = - (((isalpha(*p) ? 9 : 0) + (*p & 0xF)) << 12) + - (((isalpha(p[1]) ? 9 : 0) + (p[1] & 0xF)) << 8) + - (((isalpha(p[2]) ? 9 : 0) + (p[2] & 0xF)) << 4) + ((isalpha(p[3]) ? 9 : 0) + (p[3] & 0xF)); + (((isalpha((unsigned char)*p) ? 9 : 0) + (*p & 0xF)) << 12) + + (((isalpha((unsigned char)p[1]) ? 9 : 0) + (p[1] & 0xF)) << 8) + + (((isalpha((unsigned char)p[2]) ? 9 : 0) + (p[2] & 0xF)) << 4) + ((isalpha((unsigned char)p[3]) ? 9 : 0) + (p[3] & 0xF)); p += 4; } else break; @@@@ -934,8 +934,8 @@@@ static void sms_readfile(sms_t * h, char } else if (!strcmp(line, "ud")) { /* user data */ int o = 0; while (*p && o < SMSLEN) { - if (isxdigit(*p) && isxdigit(p[1])) { - h->ud[o++] = (((isalpha(*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha(p[1]) ? 9 : 0) + (p[1] & 0xF)); + if (isxdigit((unsigned char)*p) && isxdigit((unsigned char)p[1])) { + h->ud[o++] = (((isalpha((unsigned char)*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha((unsigned char)p[1]) ? 9 : 0) + (p[1] & 0xF)); p += 2; } else { break; @@@@ -949,8 +949,8 @@@@ static void sms_readfile(sms_t * h, char unsigned char o = 0; h->udhi = 1; while (*p && o < SMSLEN) { - if (isxdigit(*p) && isxdigit(p[1])) { - h->udh[o] = (((isalpha(*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha(p[1]) ? 9 : 0) + (p[1] & 0xF)); + if (isxdigit((unsigned char)*p) && isxdigit((unsigned char)p[1])) { + h->udh[o] = (((isalpha((unsigned char)*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha((unsigned char)p[1]) ? 9 : 0) + (p[1] & 0xF)); o++; p += 2; } else { @@@@ -1928,7 +1928,7 @@@@ static int sms_exec(struct ast_channel * ast_copy_string(h.queue, sms_args.queue, sizeof(h.queue)); for (p = h.queue; *p; p++) { - if (!isalnum(*p)) { + if (!isalnum((unsigned char)*p)) { *p = '-'; /* make very safe for filenames */ } } @