[asterisk-bugs] [JIRA] (ASTERISK-28572) Memory leak in function exchangecal_destructor in res/res_calendar_exchange.c and icalendar_destructor in res/res_calendar_icalendar.c

Yoooooo Ha (JIRA) noreply at issues.asterisk.org
Mon Oct 7 08:55:48 CDT 2019


Yoooooo Ha created ASTERISK-28572:
-------------------------------------

             Summary: Memory leak in function exchangecal_destructor in res/res_calendar_exchange.c and  icalendar_destructor in res/res_calendar_icalendar.c
                 Key: ASTERISK-28572
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-28572
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
          Components: Resources/res_calendar_exchange, Resources/res_calendar_icalendar
    Affects Versions: 16.6.0
         Environment: No
            Reporter: Yoooooo Ha


####################################
struct exchangecal_pvt {
         AST_DECLARE_STRING_FIELDS(
                 AST_STRING_FIELD(url);
                 AST_STRING_FIELD(user);
                 AST_STRING_FIELD(secret);
         );
         struct ast_calendar *owner;
         ne_uri uri;
         ne_session *session;
         struct ao2_container *events;
};
static void exchangecal_destructor(void *obj)
{
         struct exchangecal_pvt *pvt = obj;

         ast_debug(1, "Destroying pvt for Exchange calendar %s\n", 
pvt->owner->name);
         if (pvt->session) {
                 ne_session_destroy(pvt->session);
         }
         ast_string_field_free_memory(pvt);

         ao2_callback(pvt->events, OBJ_UNLINK | OBJ_NODATA | 
OBJ_MULTIPLE, NULL, NULL);

         ao2_ref(pvt->events, -1);
}
####################################

####################################
struct icalendar_pvt {
         AST_DECLARE_STRING_FIELDS(
                 AST_STRING_FIELD(url);
                 AST_STRING_FIELD(user);
                 AST_STRING_FIELD(secret);
         );
         struct ast_calendar *owner;
         ne_uri uri;
         ne_session *session;
         icalcomponent *data;
         struct ao2_container *events;
};
static void icalendar_destructor(void *obj)
{
         struct icalendar_pvt *pvt = obj;

         ast_debug(1, "Destroying pvt for iCalendar %s\n", 
pvt->owner->name);
         if (pvt->session) {
                 ne_session_destroy(pvt->session);
         }
         if (pvt->data) {
                 icalcomponent_free(pvt->data);
         }
         ast_string_field_free_memory(pvt);

         ao2_callback(pvt->events, OBJ_UNLINK | OBJ_NODATA | 
OBJ_MULTIPLE, NULL, NULL);

         ao2_ref(pvt->events, -1);
}
####################################

As we can see, the object uri is not freed in these two functions.
The vulnerability is same as the one fixed in 
https://gerrit.asterisk.org/c/asterisk/+/6509 
(https://issues.asterisk.org/jira/browse/ASTERISK-25524)




--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list