summaryrefslogtreecommitdiff
path: root/acl.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2004-01-10 21:19:56 +0000
committerMark Spencer <markster@digium.com>2004-01-10 21:19:56 +0000
commit861ed9a339a1cdb15a76f36fb02b309163b87e85 (patch)
tree732ea183900f73dfe5f8e99fde080e99ccda534d /acl.c
parent0cd9e10d2d1de9ab6a3e2043e03dda2332af1276 (diff)
Cleanup ACL parsing, handle properly reload on sip with ACL
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1918 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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)) {