Navigation


Changeset 1272:34265c9c1e94 in freeDiameter for extensions


Ignore:
Timestamp:
May 23, 2014, 11:05:38 PM (10 years ago)
Author:
Thomas Klausner <tk@giga.or.at>
Branch:
default
Phase:
public
Message:

Plug memory leaks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/rt_ignore_dh/rt_ignore_dh.c

    r1052 r1272  
    4242struct dict_object * pi_avp_do; /* cache the Proxy-Info dictionary object */
    4343struct dict_object * ps_avp_do; /* cache the Proxy-State dictionary object */
    44 
    45 static void *memdup(void *data, size_t len)
    46 {
    47         void *mem;
    48         if ((mem=malloc(len)) == NULL)
    49                 return NULL;
    50         memcpy(mem, data, len);
    51         return mem;
    52 }
    5344
    5445static int restore_origin_host(struct msg **msg) {
     
    9283                                                        break;
    9384                                                case AC_PROXY_STATE:
     85                                                        ps = chdr->avp_value->os.data;
    9486                                                        ps_len = chdr->avp_value->os.len;
    95                                                         ps = memdup(chdr->avp_value->os.data, ps_len);
    96                                                         if (!ps) {
    97                                                                 TRACE_ERROR("malloc failure");
    98                                                                 return 0;
    99                                                         }
    10087                                                        break;
    10188                                                default:
     
    10996                                        new_oh_len = ps_len;
    11097                                        pi_avp = avp;
    111                                 } else
    112                                         free(ps);
     98                                }
    11399                                break;
    114100                        default:
     
    152138                        CHECK_FCT(fd_msg_avp_new(ph_avp_do, 0, &ph_avp));
    153139                        memset(&val, 0, sizeof(val));
    154                         val.os.data = memdup(fd_g_config->cnf_diamid, fd_g_config->cnf_diamid_len);
     140                        val.os.data = fd_g_config->cnf_diamid;
    155141                        val.os.len = fd_g_config->cnf_diamid_len;
    156142                        CHECK_FCT(fd_msg_avp_setvalue(ph_avp, &val));
     
    158144                        CHECK_FCT(fd_msg_avp_new(ps_avp_do, 0, &ps_avp));
    159145                        memset(&val, 0, sizeof(val));
    160                         val.os.data = memdup(ahdr->avp_value->os.data, ahdr->avp_value->os.len);
     146                        val.os.data = ahdr->avp_value->os.data;
    161147                        val.os.len = ahdr->avp_value->os.len;
    162148                        CHECK_FCT(fd_msg_avp_setvalue(ps_avp, &val));
Note: See TracChangeset for help on using the changeset viewer.