diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-09-02 14:37:53 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-09-02 14:37:53 +0000 |
commit | 9c744bc79911ba6e28bad1f70805a3cb701066c6 (patch) | |
tree | c92aafc248a1297fd5e0ab54edb76417eb18a382 /main/config.c | |
parent | 81a46b1d19c240465337614d8c98676bfe62e194 (diff) |
We shouldn't use a filename blindly without checking to make sure it's unused first
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@81430 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/config.c')
-rw-r--r-- | main/config.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/main/config.c b/main/config.c index 7a44685b9..5889a0358 100644 --- a/main/config.c +++ b/main/config.c @@ -235,12 +235,14 @@ struct ast_config_include *ast_include_new(struct ast_config *conf, const char * instances is possible, I'd have to create a new master for each instance. */ struct ast_config_include *inc; + struct stat statbuf; inc = ast_include_find(conf, included_file); - if (inc) - { - inc->inclusion_count++; - snprintf(real_included_file_name, real_included_file_name_size, "%s~~%d", included_file, inc->inclusion_count); + if (inc) { + do { + inc->inclusion_count++; + snprintf(real_included_file_name, real_included_file_name_size, "%s~~%d", included_file, inc->inclusion_count); + } while (stat(real_included_file_name, &statbuf) == 0); ast_log(LOG_WARNING,"'%s', line %d: Same File included more than once! This data will be saved in %s if saved back to disk.\n", from_file, from_lineno, real_included_file_name); } else *real_included_file_name = 0; |