libpreludedb/master: Fix events deletion/move bugs

[email protected] Fri, 29 Jan 2010 18:00:43 +0100 (CET)
Newsgroups gmane.comp.security.ids.prelude.cvs
Message-ID <[email protected]>
commit e8ee0396b926e1edae26f69cf61d4cd2d3e24435
Author: Yoann Vandoorselaere <[email protected]>
Date:   Thu Jan 21 10:52:39 2010 +0100

    Fix events deletion/move bugs
    
    When deleting events without specifying the --count parameters, only
    half of the events would be deleted.
    
    When moving alert, only half of the alert would be moved.


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

 preludedb-admin.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

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

diff --git a/preludedb-admin.c b/preludedb-admin.c
index dda7885..4fb4325 100644
--- a/preludedb-admin.c
+++ b/preludedb-admin.c
@@ -276,14 +276,14 @@ static int db_error(preludedb_t *db, ssize_t ret, const char *fmt, ...)
 
 
 
-static int fetch_message_idents_limited(preludedb_t *db, preludedb_result_idents_t **result)
+static int fetch_message_idents_limited(preludedb_t *db, preludedb_result_idents_t **result, prelude_bool_t no_increment)
 {
         int count;
         int64_t local_limit;
 
         local_limit = (limit_copy < 0) ? events_per_transaction : MIN(events_per_transaction, limit_copy);
 
-        count = get_message_idents(db, criteria, (int) local_limit, (int) offset + cur_count, 0, result);
+        count = get_message_idents(db, criteria, (int) local_limit, (int) offset + ((no_increment) ? 0 : cur_count), 0, result);
         if ( count < 0 )
                 return db_error(db, count, "retrieving alert ident failed");
 
@@ -679,7 +679,7 @@ static int do_cmd_copy_move(int argc, char **argv, prelude_bool_t delete_copied)
         transaction_start(dst);
 
         do {
-                count = ret = fetch_message_idents_limited(src, &idents);
+                count = ret = fetch_message_idents_limited(src, &idents, (delete_copied) ? TRUE : FALSE);
                 if ( count > 0 ) {
                         ret = copy_iterate(src, dst, idents, &dst_event_no, get_message,
                                            (delete_copied) ? delete_message_from_list : NULL,
@@ -743,7 +743,7 @@ static int cmd_delete(int argc, char **argv)
         transaction_start(db);
 
         do {
-                count = ret = fetch_message_idents_limited(db, &idents);
+                count = ret = fetch_message_idents_limited(db, &idents, TRUE);
                 if ( count > 0 ) {
                         ret = do_delete(db, idents, delete_message_from_result_idents, stat_delete);
                         preludedb_result_idents_destroy(idents);
@@ -855,7 +855,7 @@ static int cmd_save(int argc, char **argv)
         prelude_msgbuf_set_callback(msgbuf, save_msg);
 
         do {
-                count = ret = fetch_message_idents_limited(db, &idents);
+                count = ret = fetch_message_idents_limited(db, &idents, FALSE);
                 if ( count > 0 ) {
                         ret = save_iterate_message(db, idents, msgbuf, get_message, stat_fetch, stat_save);
                         preludedb_result_idents_destroy(idents);
@@ -1083,7 +1083,7 @@ static int cmd_print(int argc, char **argv)
         prelude_io_set_file_io(io, fd);
 
         do {
-                count = ret = fetch_message_idents_limited(db, &idents);
+                count = ret = fetch_message_idents_limited(db, &idents, FALSE);
                 if ( count > 0 ) {
                         ret = print_iterate_message(db, idents, io, get_message, stat_fetch, stat_print);
                         preludedb_result_idents_destroy(idents);
_______________________________________________
Prelude-cvslog site list
[email protected]
http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog