From: Terry Wilson Date: Wed, 19 Oct 2011 07:42:55 +0000 (+0000) Subject: Don't use is_int() since it doesn't link well on all platforms X-Git-Tag: 10.0.0-rc1~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26f196468f86643b989592a519a78b26d16aeab4;p=thirdparty%2Fasterisk.git Don't use is_int() since it doesn't link well on all platforms Just create an normal API function in strings.h that does the same thing just to be safe. ASTERISK-17146 ........ Merged revisions 341379 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@341380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 7228298834..42df3bb599 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -265,7 +265,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/data.h" #include "asterisk/aoc.h" #include "asterisk/message.h" -#include "asterisk/pval.h" #include "sip/include/sip.h" #include "sip/include/globals.h" #include "sip/include/config_parser.h" @@ -5312,7 +5311,7 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer, struct ast_soc dialog->relatedpeer = sip_ref_peer(peer, "create_addr: setting dialog's relatedpeer pointer"); sip_unref_peer(peer, "create_addr: unref peer from sip_find_peer hashtab lookup"); return res; - } else if (is_int(peername)) { + } else if (ast_check_digits(peername)) { /* Although an IPv4 hostname *could* be represented as a 32-bit integer, it is uncommon and * it makes dialing SIP/${EXTEN} for a peer that isn't defined resolve to an IP that is * almost certainly not intended. It is much better to just reject purely numeric hostnames */ diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h index 49d3e0da85..cd69c6b6b9 100644 --- a/include/asterisk/strings.h +++ b/include/asterisk/strings.h @@ -871,6 +871,25 @@ int __attribute__((format(printf, 3, 4))) ast_str_append( } ) +/*! + * \brief Check if a string is only digits + * + * \retval 1 The string contains only digits + * \retval 0 The string contains non-digit characters + */ +AST_INLINE_API( +int ast_check_digits(char *arg), +{ + char *s; + for (s=arg; *s; s++) { + if (*s < '0' || *s > '9') { + return 0; + } + } + return 1; +} +) + /*! * \brief Compute a hash value on a string *