diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-01-10 21:19:56 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-01-10 21:19:56 +0000 |
commit | d64fe05700770ce8aca0f6db9e4e8dfe996315e3 (patch) | |
tree | 732ea183900f73dfe5f8e99fde080e99ccda534d /acl.c | |
parent | 1fcdac0b0ad21a6126e50b79c30dad7f29f2a0c7 (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-x | acl.c | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -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)) { |