mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-18 18:46:16 +00:00
Fix the logic in config_text_file_save so that if an
UpdateConfig manager action is issued and the file specified in DstFileName does not yet exist, an error is not returned. (closes issue #13341) Reported by: vadim Patches: 13341.patch uploaded by putnopvut (license 60) (with small modification from seanbright) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@139769 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1013,6 +1013,7 @@ int config_text_file_save(const char *configfile, const struct ast_config *cfg,
|
||||
struct ast_comment *cmt;
|
||||
struct stat s;
|
||||
int blanklines = 0;
|
||||
int stat_result = 0;
|
||||
|
||||
if (configfile[0] == '/') {
|
||||
snprintf(fntmp, sizeof(fntmp), "%s.XXXXXX", configfile);
|
||||
@@ -1124,10 +1125,11 @@ int config_text_file_save(const char *configfile, const struct ast_config *cfg,
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
stat(fn, &s);
|
||||
fchmod(fd, s.st_mode);
|
||||
if (!(stat_result = stat(fn, &s))) {
|
||||
fchmod(fd, s.st_mode);
|
||||
}
|
||||
fclose(f);
|
||||
if (unlink(fn) || link(fntmp, fn)) {
|
||||
if ((!stat_result && unlink(fn)) || link(fntmp, fn)) {
|
||||
if (option_debug)
|
||||
ast_log(LOG_DEBUG, "Unable to open for writing: %s (%s)\n", fn, strerror(errno));
|
||||
if (option_verbose > 1)
|
||||
|
Reference in New Issue
Block a user