diff -Naur samba-orig/source/libsmb/libsmb_dir.c samba-3.3.4/source/libsmb/libsmb_dir.c --- samba-orig/source3/libsmb/libsmb_dir.c 2009-09-28 11:40:20.000000000 +0200 +++ samba/source3/libsmb/libsmb_dir.c 2009-09-28 11:36:51.000000000 +0200 @@ -1081,10 +1081,21 @@ dirent->namelen + 1); - ndir += reqd; + /* have a pointer to the element we will now pad with zeros to have successors aligned */ + struct smbc_dirent *currentEntry = ((struct smbc_dirent *) ndir); + ndir += reqd; rem -= reqd; + /* align the struct for the next entry by appending zeros */ + while((rem > 0) && ((int)ndir & (sizeof(void*) - 1))) + { + *ndir = '\0'; + rem--; + ndir++; + currentEntry->dirlen++; + } + dir->dir_next = dirlist = dirlist -> next; }