tags 309003 patch
thanks
Quoting Michael Lueck ([EMAIL PROTECTED]):
> I have downloaded and installed:
>
> samba-common_3.0.14a-2_i386.deb
> samba_3.0.14a-2_i386.deb
>
> The problem is resolved in this version. That is as much as I have tested at
> this time. I will be doing some major file transfers against the new code and
> report after that.
>
> At this time we do not use the other .deb's in the Samba project.
Great. For Steve and Eloy, here's the patch I used.
--- samba-3.0.14a.orig/source/include/smb_macros.h 2005-04-13
23:14:26.000000000 -0700
+++ samba-3.0.14/source/include/smb_macros.h 2005-05-01 02:21:08.000000000
-0700
@@ -225,16 +225,10 @@
split_at_last_component(full_keyname, key_name, '\\', subkey_name)
/****************************************************************************
- Used by dptr_zero.
-****************************************************************************/
-
-#define DPTR_MASK ((uint32)(((uint32)1)<<31))
-
-/****************************************************************************
Return True if the offset is at zero.
****************************************************************************/
-#define dptr_zero(buf) ((IVAL(buf,1)&~DPTR_MASK) == 0)
+#define dptr_zero(buf) (IVAL(buf,1) == 0)
/*******************************************************************
copy an IP address from one buffer to another
--- samba-3.0.14a.orig/source/smbd/dir.c 2005-04-13 23:14:20.000000000
-0700
+++ samba-3.0.14a/source/smbd/dir.c 2005-05-01 02:21:08.000000000 -0700
@@ -622,11 +622,11 @@
DEBUG(1,("filling null dirptr %d\n",key));
return(False);
}
- offset = TellDir(dptr->dir_hnd);
+ offset = (uint32)TellDir(dptr->dir_hnd);
DEBUG(6,("fill on key %u dirptr 0x%lx now at %d\n",key,
(long)dptr->dir_hnd,(int)offset));
buf[0] = key;
- SIVAL(buf,1,offset | DPTR_MASK);
+ SIVAL(buf,1,offset);
return(True);
}
@@ -639,16 +639,22 @@
unsigned int key = *(unsigned char *)buf;
struct dptr_struct *dptr = dptr_get(key, False);
uint32 offset;
+ long seekoff;
if (!dptr) {
DEBUG(3,("fetched null dirptr %d\n",key));
return(NULL);
}
*num = key;
- offset = IVAL(buf,1)&~DPTR_MASK;
- SeekDir(dptr->dir_hnd,(long)offset);
+ offset = IVAL(buf,1);
+ if (offset == (uint32)-1) {
+ seekoff = -1;
+ } else {
+ seekoff = (long)offset;
+ }
+ SeekDir(dptr->dir_hnd,seekoff);
DEBUG(3,("fetching dirptr %d for path %s at offset %d\n",
- key,dptr_path(key),offset));
+ key,dptr_path(key),(int)seekoff));
return(dptr);
}