File project.diff of Package dmraid

--- dmraid.changes.orig
+++ dmraid.changes
@@ -1,4 +1,10 @@
 -------------------------------------------------------------------
+Fri Nov 21 16:11:03 CST 2008 - cmeng@novell.com
+
+- fixed scandir() segment fault in libdmraid-event [bnc#443284]
+- remove 'pushd libdmraid*' in dmraid.spec
+
+-------------------------------------------------------------------
 Mon Nov 10 12:44:08 CET 2008 - mkoenig@suse.de
 
 - adapt mkinitrd script to changed UUID prefix [bnc#441479]
--- dmraid.spec.orig
+++ dmraid.spec
@@ -45,6 +45,7 @@ Patch10:        dmraid-1.0.0.rc14-fixup_
 Patch11:        dmraid-1.0.0.rc15-scsi_serial_remove_ws.patch
 # libdmraid-events
 Patch50:        libdmraid-events.dif
+Patch51:        libdmraid-events-scandir-segfault.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 PreReq:         %fillup_prereq
 
@@ -113,9 +114,8 @@ Authors:
 %patch6 -p1
 %patch10 -p1
 %patch11 -p1
-pushd libdmraid*
 %patch50
-popd
+%patch51
 cp %{SOURCE3} .
 
 %build
--- libdmraid-events-scandir-segfault.patch.orig
+++ libdmraid-events-scandir-segfault.patch
@@ -0,0 +1,32 @@
+Index: libdmraid-events/libdmraid-events.c
+===================================================================
+--- libdmraid-events.orig/libdmraid-events.c
++++ libdmraid-events/libdmraid-events.c
+@@ -145,7 +145,7 @@ static int _repopulate(const char* devic
+ 	char test_path[BUF_SIZE];
+ 	FILE *fd;
+ 	DIR *dir;
+-	struct dirent **dir_ent;
++	struct dirent **dir_ent = 0;
+ 
+ 	while(strcmp(curr->vol_name, device))
+ 		curr=curr->next;
+@@ -160,7 +160,7 @@ static int _repopulate(const char* devic
+ 		if(!inset) {			
+ 			memcpy(curr->raid_mem[curr->num_sata_drives].dev_name, disk, strlen(disk));
+ 			i = scandir(sys_path, &dir_ent, 0, alphasort);
+-			while(i--) {
++			while(i>0 && i--) {
+     			    if(dir_ent[i]->d_name[0] != '.') {					
+ 						/* Append the "X:X:X:X" to sys_path */
+ 						memset(sys_path+strlen(SYS_SCSI_PATH), 0, BUF_SIZE-strlen(SYS_SCSI_PATH));
+@@ -188,7 +188,8 @@ static int _repopulate(const char* devic
+ 			    free(dir_ent[i]);
+ 			}
+ 			
+-			free(dir_ent);			
++			if (dir_ent) free(dir_ent);
++			dir_ent = 0;
+ 			curr->num_sata_drives++;
+ 			ret++;
+ 		}
--- libdmraid-events.dif.orig
+++ libdmraid-events.dif
@@ -1,5 +1,5 @@
---- Makefile
-+++ Makefile	2008/09/15 11:42:03
+--- libdmraid-events.orig/Makefile
++++ libdmraid-events/Makefile	2008/09/15 11:42:03
 @@ -39,7 +39,7 @@
  
  
openSUSE Build Service is sponsored by