]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Fixed a memory leak in the attribute segmentation code
authorAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 27 Feb 2015 14:13:07 +0000 (15:13 +0100)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 27 Feb 2015 14:13:26 +0000 (15:13 +0100)
src/libimcv/seg/seg_env.c
src/libimcv/seg/seg_env.h
src/libimcv/suites/test_imcv_seg.c

index c47ce2934164917be3886c236a7b255ee06f3a84..1605c8414b032f18c930ec4e6e680781f2cd9900 100644 (file)
@@ -233,7 +233,7 @@ seg_env_t *seg_env_create(uint32_t base_attr_id, pa_tnc_attr_t *base_attr,
                        .destroy = _destroy,
                },
                .base_attr_id = base_attr_id,
-               .base_attr = base_attr->get_ref(base_attr),
+               .base_attr = base_attr,
                .max_seg_size = max_seg_size,
                .data = base_attr->get_value(base_attr),
        );
index 08d33d752e40626ae6635670c16b0928843e9028..611f9a98a37bce0df57429c93f32e2bf21d1207b 100644 (file)
@@ -98,7 +98,7 @@ struct seg_env_t {
  * Create a PA-TNC attribute segment envelope object
  *
  * @param base_attr_id         Base Attribute ID
- * @param base_attr                    Base Attribute to be segmented
+ * @param base_attr                    Base Attribute to be segmented, owned by seg_env_t
  * @param max_seg_size         Maximum segment size
  */
 seg_env_t* seg_env_create(uint32_t base_attr_id, pa_tnc_attr_t *base_attr,
index 469b1110d31a24fcab2979a2b980bbf82cd2442a..5202afd47915a80b6310e5baa88d26b6ed42c115 100644 (file)
@@ -64,10 +64,11 @@ START_TEST(test_imcv_seg_env)
        libimcv_init(FALSE);
        max_seg_size  = seg_env_tests[_i].max_seg_size;
        last_seg_size = seg_env_tests[_i].last_seg_size;
+
        base_attr = ita_attr_command_create(command);
        base_attr->build(base_attr);
-
        seg_env = seg_env_create(id, base_attr, max_seg_size);
+
        if (seg_env_tests[_i].next_segs == 0)
        {
                ck_assert(seg_env == NULL);
@@ -156,7 +157,6 @@ START_TEST(test_imcv_seg_env)
                seg_env1->destroy(seg_env1);
                base_attr1->destroy(base_attr1);
        }
-       base_attr->destroy(base_attr);
        libimcv_deinit();
 }
 END_TEST