[Aide] Question about report output
Pablo Virolainen
pablo at vapaa.fi
Wed Nov 29 17:47:01 EET 2006
There was a bug indeed. Now it should be fixed.
Pablo Virolainen
-------------- next part --------------
? aide.db
? retry.diff
Index: include/db.h
===================================================================
RCS file: /cvsroot/aide/aide/include/db.h,v
retrieving revision 1.3
diff -u -r1.3 db.h
--- include/db.h 15 Nov 2005 16:17:11 -0000 1.3
+++ include/db.h 29 Nov 2006 15:46:16 -0000
@@ -35,6 +35,7 @@
int db_close(db_config*);
void free_db_line(db_line* dl);
+void print_attr_diff(int errorlevel,char* filename1,char* filename2,DB_ATTR_TYPE attr1,DB_ATTR_TYPE attr2);
extern const char* db_names[];
extern const int db_value[];
Index: src/compare_db.c
===================================================================
RCS file: /cvsroot/aide/aide/src/compare_db.c,v
retrieving revision 1.19
diff -u -r1.19 compare_db.c
--- src/compare_db.c 27 Oct 2006 20:44:38 -0000 1.19
+++ src/compare_db.c 29 Nov 2006 15:46:17 -0000
@@ -945,8 +945,11 @@
int localignorelist=old->attr ^ ((db_line*)r->data)->attr;
if ((localignorelist&(~(DB_NEWFILE|DB_RMFILE)))!=0) {
+ print_attr_diff(2,old->filename,NULL,old->attr,((db_line*)r->data)->attr);
+ /*
error(2,"File %s in databases has different attributes, %llx,%llx\n",
old->filename,old->attr,((db_line*)r->data)->attr);
+ */
}
localignorelist|=ignorelist;
Index: src/db.c
===================================================================
RCS file: /cvsroot/aide/aide/src/db.c,v
retrieving revision 1.16
diff -u -r1.16 db.c
--- src/db.c 25 Nov 2006 10:07:40 -0000 1.16
+++ src/db.c 29 Nov 2006 15:46:17 -0000
@@ -129,6 +129,69 @@
db_lnkcount } ; /* "count", */
+void print_attr_diff(int errorlevel,char* filename1,char* filename2,DB_ATTR_TYPE attr1,DB_ATTR_TYPE attr2)
+{
+ static char* stdmsg=
+ "File \"%s\"%s%s%s in databases has different attributes "
+ "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
+ "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
+ "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"
+ "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n";
+ const char* p[128];
+ char* delim_l,*delim_r;
+ int count=0,pos=0;
+
+
+ if (attr1==0 || attr2==0) {
+ return;
+ }
+
+ if (filename2==NULL) {
+ filename2="";
+ delim_l="";
+ delim_r="";
+ } else {
+ delim_l=" \"";
+ delim_r="\" ";
+ }
+
+ while(attr1!=attr2) {
+ if ((attr1&1) != (attr2&1)) {
+ p[count]=db_names[pos];
+ count++;
+ if (attr1&1) {
+ p[count]=":N ";
+ } else {
+ p[count]=":O ";
+ }
+ count++;
+ }
+ if (pos!=db_unknown) {
+ pos++;
+ }
+ attr1=attr1>>1;
+ attr2=attr2>>1;
+ }
+
+ if (count==0) {
+ /* Programming error */
+ abort();
+ }
+ for(;count<128;count++) {
+ p[count]="";
+ }
+ error(errorlevel,stdmsg,filename1,delim_l,filename2,delim_r,
+ p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15],
+ p[16], p[17], p[18], p[19], p[20], p[21], p[22], p[23], p[24], p[25], p[26], p[27], p[28], p[29], p[30], p[31],
+ p[32], p[33], p[34], p[35], p[36], p[37], p[38], p[39], p[40], p[41], p[42], p[43], p[44], p[45], p[46], p[47],
+ p[48], p[49], p[50], p[51], p[52], p[53], p[54], p[55], p[56], p[57], p[58], p[59], p[60], p[61], p[62], p[63],
+ p[64], p[65], p[66], p[67], p[68], p[69], p[70], p[71], p[72], p[73], p[74], p[75], p[76], p[77], p[78], p[79],
+ p[80], p[81], p[82], p[83], p[84], p[85], p[86], p[87], p[88], p[89], p[90], p[91], p[92], p[93], p[94], p[95],
+ p[96], p[97], p[98], p[99], p[100], p[101], p[102], p[103], p[104], p[105], p[106], p[107], p[108], p[109], p[110], p[111],
+ p[112], p[113], p[114], p[115], p[116], p[117], p[118], p[119], p[120], p[121], p[122], p[123], p[124], p[125], p[126], p[127]
+ );
+}
+
int db_init(int db)
{
void* rv=NULL;
Index: src/gen_list.c
===================================================================
RCS file: /cvsroot/aide/aide/src/gen_list.c,v
retrieving revision 1.29
diff -u -r1.29 gen_list.c
--- src/gen_list.c 24 Nov 2006 18:25:02 -0000 1.29
+++ src/gen_list.c 29 Nov 2006 15:46:18 -0000
@@ -1218,8 +1218,11 @@
if((node->checked&DB_OLD)&&(node->checked&DB_NEW)){
localignorelist=(node->new_data->attr^node->old_data->attr);
if (localignorelist!=0) {
+ print_attr_diff(2,node->old_data->filename,NULL,node->old_data->attr,node->new_data->attr);
+ /*
error(2,"File %s in databases has different attributes, %llx,%llx\n",
node->old_data->filename,node->old_data->attr,node->new_data->attr);
+ */
}
localignorelist|=ignorelist;
@@ -1267,8 +1270,11 @@
localignorelist=(oldData->attr^newData->attr)&(~(DB_NEWFILE|DB_RMFILE));
if (localignorelist!=0) {
+ print_attr_diff(5,newData->filename,oldData->filename,newData->attr,oldData->attr);
+ /*
error(5,"File \"%s\" \"%s\" in databases has different attributes (here3), %llx,%llx\n",
newData->filename,oldData->filename,oldData->attr,newData->attr);
+ */
}
localignorelist|=ignorelist|DB_CTIME;
More information about the Aide
mailing list