aboutsummaryrefslogtreecommitdiffstats
path: root/acl.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-01-10 21:19:56 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-01-10 21:19:56 +0000
commitd64fe05700770ce8aca0f6db9e4e8dfe996315e3 (patch)
tree732ea183900f73dfe5f8e99fde080e99ccda534d /acl.c
parent1fcdac0b0ad21a6126e50b79c30dad7f29f2a0c7 (diff)
Cleanup ACL parsing, handle properly reload on sip with ACL
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1918 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'acl.c')
-rwxr-xr-xacl.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/acl.c b/acl.c
index 98e2feab6..6adc7f3de 100755
--- a/acl.c
+++ b/acl.c
@@ -69,6 +69,7 @@ struct ast_ha *ast_append_ha(char *sense, char *stuff, struct ast_ha *path)
{
struct ast_ha *ha = malloc(sizeof(struct ast_ha));
char *nm;
+ char tmp[256] = "";
struct ast_ha *prev = NULL;
struct ast_ha *ret;
ret = path;
@@ -77,21 +78,23 @@ struct ast_ha *ast_append_ha(char *sense, char *stuff, struct ast_ha *path)
path = path->next;
}
if (ha) {
- char *stringp=NULL;
- stringp=stuff;
- strsep(&stringp, "/");
- nm = strsep(&stringp, "/");
+ strncpy(tmp, stuff, sizeof(tmp) - 1);
+ nm = strchr(tmp, '/');
if (!nm)
nm = "255.255.255.255";
- if (!inet_aton(stuff, &ha->netaddr)) {
+ else {
+ *nm = '\0';
+ nm++;
+ }
+ if (!inet_aton(tmp, &ha->netaddr)) {
ast_log(LOG_WARNING, "%s not a valid IP\n", stuff);
free(ha);
- return NULL;
+ return path;
}
if (!inet_aton(nm, &ha->netmask)) {
ast_log(LOG_WARNING, "%s not a valid netmask\n", nm);
free(ha);
- return NULL;
+ return path;
}
ha->netaddr.s_addr &= ha->netmask.s_addr;
if (!strncasecmp(sense, "p", 1)) {