]> git.pld-linux.org Git - packages/samba.git/blame - samba-CIFS-extensions.patch
- copy-pasto
[packages/samba.git] / samba-CIFS-extensions.patch
CommitLineData
2e6194c4 1diff -Nur samba-2.2.4.orig/source/include/trans2.h samba-2.2.4/source/include/trans2.h
2--- samba-2.2.4.orig/source/include/trans2.h Sun Feb 3 01:46:40 2002
3+++ samba-2.2.4/source/include/trans2.h Thu Jun 13 15:54:53 2002
4@@ -337,6 +337,15 @@
5 #define SMB_UID_NO_CHANGE 0xFFFFFFFF
6 #define SMB_GID_NO_CHANGE 0xFFFFFFFF
7
8+#define SMB_SIZE_NO_CHANGE 0xFFFFFFFFFFFFFFFF
9+#define SMB_SIZE_NO_CHANGE_LO 0xFFFFFFFF
10+#define SMB_SIZE_NO_CHANGE_HI 0xFFFFFFFF
11+
12+#define SMB_TIME_NO_CHANGE 0xFFFFFFFFFFFFFFFF
13+#define SMB_TIME_NO_CHANGE_LO 0xFFFFFFFF
14+#define SMB_TIME_NO_CHANGE_HI 0xFFFFFFFF
15+
16+
17 /*
18 Offset Size Name
19 0 LARGE_INTEGER EndOfFile File size
20diff -Nur samba-2.2.4.orig/source/smbd/trans2.c samba-2.2.4/source/smbd/trans2.c
21--- samba-2.2.4.orig/source/smbd/trans2.c Fri May 3 03:03:49 2002
22+++ samba-2.2.4/source/smbd/trans2.c Thu Jun 13 15:54:53 2002
23@@ -417,6 +417,21 @@
24 }
25
26 /****************************************************************************
27+checks for SMB_TIME_NO_CHANGE and if not found
28+calls interpret_long_date
29+****************************************************************************/
30+time_t interpret_long_unix_date(char *p)
31+{
32+ DEBUG(1,("interpret_long_unix_date\n"));
33+ if(IVAL(p,0) == SMB_TIME_NO_CHANGE_LO &&
34+ IVAL(p,4) == SMB_TIME_NO_CHANGE_HI) {
35+ return -1;
36+ } else {
37+ return interpret_long_date(p);
38+ }
39+}
40+
41+/****************************************************************************
42 Get a level dependent lanman2 dir entry.
43 ****************************************************************************/
44
45@@ -2575,16 +2590,19 @@
46 if (total_data < 100)
47 return(ERROR_DOS(ERRDOS,ERRinvalidparam));
48
49- size=IVAL(pdata,0); /* first 8 Bytes are size */
50+ if(IVAL(pdata, 0) != SMB_SIZE_NO_CHANGE_LO &&
51+ IVAL(pdata, 4) != SMB_SIZE_NO_CHANGE_HI) {
52+ size=IVAL(pdata,0); /* first 8 Bytes are size */
53 #ifdef LARGE_SMB_OFF_T
54- size |= (((SMB_OFF_T)IVAL(pdata,4)) << 32);
55+ size |= (((SMB_OFF_T)IVAL(pdata,4)) << 32);
56 #else /* LARGE_SMB_OFF_T */
57- if (IVAL(pdata,4) != 0) /* more than 32 bits? */
58- return ERROR_DOS(ERRDOS,ERRunknownlevel);
59+ if (IVAL(pdata,4) != 0) /* more than 32 bits? */
60+ return ERROR_DOS(ERRDOS,ERRunknownlevel);
61 #endif /* LARGE_SMB_OFF_T */
62+ }
63 pdata+=24; /* ctime & st_blocks are not changed */
64- tvs.actime = interpret_long_date(pdata); /* access_time */
65- tvs.modtime = interpret_long_date(pdata+8); /* modification_time */
66+ tvs.actime = interpret_long_unix_date(pdata); /* access_time */
67+ tvs.modtime = interpret_long_unix_date(pdata+8); /* modification_time */
68 pdata+=16;
69 set_owner = (uid_t)IVAL(pdata,0);
70 pdata += 8;
This page took 0.087004 seconds and 4 git commands to generate.