From 86ecdb2ec109af536efa70c2b0e4b93c4072e8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20B=C3=B6ttner?= Date: Mon, 2 May 2016 14:19:30 +0200 Subject: [PATCH 1/2] enum: single digit is valid in function enum_query - is_e164() returns true for a single digit (previously two digits) --- modules/enum/enum.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/enum/enum.c b/modules/enum/enum.c index 6439f54ef0f..2c3620f6166 100644 --- a/modules/enum/enum.c +++ b/modules/enum/enum.c @@ -254,7 +254,7 @@ static inline int is_e164(str* _user) int i; char c; - if ((_user->len > 2) && (_user->len < MAX_NUM_LEN) && ((_user->s)[0] == '+')) { + if ((_user->len > 1) && (_user->len < MAX_NUM_LEN) && ((_user->s)[0] == '+')) { for (i = 1; i < _user->len; i++) { c = (_user->s)[i]; if ((c < '0') || (c > '9')) return -1; From fd3c30f981d97622fb99f2122ce0bc950774edfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20B=C3=B6ttner?= Date: Mon, 2 May 2016 14:20:25 +0200 Subject: [PATCH 2/2] enum: print out malformed uri in enum_query() - previous error message did not show up the username part of r-uri. therefor debugging was difficult. --- modules/enum/enum.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/enum/enum.c b/modules/enum/enum.c index 2c3620f6166..1abd96253ce 100644 --- a/modules/enum/enum.c +++ b/modules/enum/enum.c @@ -762,14 +762,15 @@ int enum_query(struct sip_msg* _msg, str* suffix, str* service) return -1; } + user_s = _msg->parsed_uri.user.s; + user_len = _msg->parsed_uri.user.len; + if (is_e164(&(_msg->parsed_uri.user)) == -1) { - LM_ERR("R-URI user is not an E164 number\n"); + LM_ERR("R-URI user '<%.*s>' is not an E164 number\n", + user_len, user_s); return -1; } - user_s = _msg->parsed_uri.user.s; - user_len = _msg->parsed_uri.user.len; - memcpy(&(string[0]), user_s, user_len); string[user_len] = (char)0;