summaryrefslogtreecommitdiff
path: root/main/manager.c
diff options
context:
space:
mode:
authorGeorge Joseph <george.joseph@fairview5.com>2014-09-18 14:46:12 +0000
committerGeorge Joseph <george.joseph@fairview5.com>2014-09-18 14:46:12 +0000
commitd120e403092d058dfdb7655ba8e1b8113d3b8a33 (patch)
tree9831d85d8028fdfe691a4a876ed3d18b3e5c4203 /main/manager.c
parent8839ba3727cf55018cfeae5ff7ce7d4d758993a2 (diff)
config: bug: Fix SEGV in ast_category_insert when matching category isn't found
If you call ast_category_insert with a match category that doesn't exist, the list traverse runs out of 'next' categories and you get a SEGV. This patch adds check for the end-of-list condition and changes the signature to return an int for success/failure indication instead of a void. The only consumer of this function is manager and it was also changed to use the return value. Tested by: George Joseph Review: https://reviewboard.asterisk.org/r/3993/ ........ Merged revisions 423276 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 423277 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 423278 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 423279 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423280 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager.c')
-rw-r--r--main/manager.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/main/manager.c b/main/manager.c
index 6545a519e..9744ab614 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -3321,7 +3321,11 @@ static enum error_type handle_updates(struct mansession *s, const struct message
if (ast_strlen_zero(match)) {
ast_category_append(cfg, category);
} else {
- ast_category_insert(cfg, category, match);
+ if (ast_category_insert(cfg, category, match)) {
+ result = FAILURE_NEWCAT;
+ ast_category_destroy(category);
+ break;
+ }
}
} else if (!strcasecmp(action, "renamecat")) {
if (ast_strlen_zero(value)) {