Changeset e0f2dca


Ignore:
Timestamp:
02/05/19 13:25:25 (20 months ago)
Author:
Jacob Van Walraven <jcv9@…>
Branches:
develop
Children:
a0e5b65
Parents:
4d253ae
Message:

Fix posible memory leaks, Add missing TRACE_ERR_OUT_OF_MEMORY err code

Location:
lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lib/format_pktmeta.c

    r4d253ae re0f2dca  
    160160        if (r == NULL) { return NULL; }
    161161        /* If there is not a result for the index return */
    162         if (r->num <= index) { return NULL; }
     162        if (r->num <= index) {
     163                trace_destroy_meta(r);
     164                return NULL;
     165        }
    163166        /* Ensure the supplied memory allocation is enough, if not only fill
    164167         * what we can */
     
    210213        libtrace_meta_t *r = trace_get_interface_mac_meta(packet);
    211214        if (r == NULL) { return NULL; }
    212         if (index >= r->num) { return NULL; }
     215        if (index >= r->num) {
     216                trace_destroy_meta(r);
     217                return NULL;
     218        }
    213219        if (r->items[index].len > spacelen) {
    214220                memcpy(space, r->items[index].data, spacelen);
     
    255261        if (r == NULL) { return 0; }
    256262        /* If the index wanted does not exist return 0 */
    257         if (index >= r->num) { return 0; }
     263        if (index >= r->num) {
     264                trace_destroy_meta(r);
     265                return 0;
     266        }
    258267        /* Need to check this more ERF reports this in network order */
    259268        uint64_t data = *(uint64_t *)r->items[index].data;
     
    296305        libtrace_meta_t *r = trace_get_interface_ipv4_meta(packet);
    297306        if (r == NULL) { return 0; }
    298         if (index >= r->num) { return 0; }
     307        if (index >= r->num) {
     308                trace_destroy_meta(r);
     309                return 0;
     310        }
    299311        uint32_t data = *(uint32_t *)r->items[index].data;
    300312        trace_destroy_meta(r);
     
    361373        libtrace_meta_t *r = trace_get_interface_ipv6_meta(packet);
    362374        if (r == NULL) { return NULL; }
    363         if (r->num <= index) { return NULL; }
     375        if (r->num <= index) {
     376                trace_destroy_meta(r);
     377                return NULL;
     378        }
    364379        if (r->items[index].len > spacelen) {
    365380                memcpy(space, r->items[index].data, spacelen);
     
    440455        libtrace_meta_t *r = trace_get_interface_description_meta(packet);
    441456        if (r == NULL) { return NULL; }
    442         if (r->num <= index) { return NULL; }
     457        if (r->num <= index) {
     458                trace_destroy_meta(r);
     459                return NULL;
     460        }
    443461        if (r->items[index].len > spacelen) {
    444462                memcpy(space, r->items[index].data, spacelen);
     
    526544        libtrace_meta_t *r = trace_get_interface_fcslen_meta(packet);
    527545        if (r == NULL) { return 0; }
    528         if (r->num <= index) { return 0; }
     546        if (r->num <= index) {
     547                trace_destroy_meta(r);
     548                return 0;
     549        }
    529550        uint32_t data = *(uint32_t *)r->items[index].data;
    530551        trace_destroy_meta(r);
     
    569590        libtrace_meta_t *r = trace_get_interface_comment_meta(packet);
    570591        if (r == NULL) { return NULL; }
    571         if (index > r->num) { return NULL; }
     592        if (index > r->num) {
     593                trace_destroy_meta(r);
     594                return NULL;
     595        }
    572596        if (r->items[index].len > spacelen) {
    573597                memcpy(space, r->items[index].data, spacelen);
  • lib/libtrace.h.in

    r4e9be84 re0f2dca  
    348348        /** Err with trace output file **/
    349349        TRACE_ERR_OUTPUT_FILE = -32,
     350        /** ERR out of memory **/
     351        TRACE_ERR_OUT_OF_MEMORY = -33,
    350352};
    351353
Note: See TracChangeset for help on using the changeset viewer.