libprelude/master: Prevent freeing IDMEF message value on idmef_message_get_string()

[email protected] Wed, 8 Dec 2010 14:11:17 +0100 (CET)
Newsgroups gmane.comp.security.ids.prelude.cvs
Message-ID <[email protected]>
commit 0e0b915fef733b27c0559417f31b64721a24c7a8
Author: Yoann Vandoorselaere <[email protected]>
Date:   Wed Dec 8 13:59:25 2010 +0100

    Prevent freeing IDMEF message value on idmef_message_get_string()
    
    idmef_message_get_string() used to free the value within the IDMEF
    message, because prelude_string_get_string_released() was used. As
    a result, further idmef_message_get_string() on the same IDMEF path
    where returning null value.


========================================

 src/idmef-message-helpers.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

========================================

diff --git a/src/idmef-message-helpers.c b/src/idmef-message-helpers.c
index 827e043..8560903 100644
--- a/src/idmef-message-helpers.c
+++ b/src/idmef-message-helpers.c
@@ -160,7 +160,13 @@ int idmef_message_get_string(idmef_message_t *message, const char *path, char **
                 goto err;
         }
 
-        ret = prelude_string_get_string_released(str, result);
+        if ( prelude_string_is_empty(str) ) {
+                *result = NULL;
+                return 0;
+        }
+
+        *result = strdup(prelude_string_get_string(str));
+        ret = prelude_string_get_len(str);
 
 err:
         idmef_value_destroy(iv);
_______________________________________________
Prelude-cvslog site list
[email protected]
http://lists.prelude-technologies.com/mailman/listinfo/prelude-cvslog