From: Richard Mudgett Date: Wed, 31 Jan 2018 21:40:36 +0000 (-0600) Subject: manager.c: Fix potential memory leak and corruption. X-Git-Tag: 15.3.0-rc1~52^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=edc64d6aa3fd56c45113c9a8dc20948bbfed3bef;p=thirdparty%2Fasterisk.git manager.c: Fix potential memory leak and corruption. ast_str_append_event_header() could potentially leak and corrupt memory if the ast_str needed to expand to add the AMI event header. * Fixed to return error if the ast_str_append() failed. Change-Id: I92f36b855540743b208d76e274152ee2d758176d --- diff --git a/main/manager.c b/main/manager.c index 576978c31c..a97f208db6 100644 --- a/main/manager.c +++ b/main/manager.c @@ -9490,23 +9490,16 @@ struct ast_datastore *astman_datastore_find(struct mansession *s, const struct a } int ast_str_append_event_header(struct ast_str **fields_string, - const char *header, const char *value) + const char *header, const char *value) { - struct ast_str *working_str = *fields_string; - - if (!working_str) { - working_str = ast_str_create(128); - if (!working_str) { + if (!*fields_string) { + *fields_string = ast_str_create(128); + if (!*fields_string) { return -1; } - *fields_string = working_str; } - ast_str_append(&working_str, 0, - "%s: %s\r\n", - header, value); - - return 0; + return (ast_str_append(fields_string, 0, "%s: %s\r\n", header, value) < 0) ? -1 : 0; } static void manager_event_blob_dtor(void *obj)