]> git.pld-linux.org Git - packages/samba.git/blob - samba-CIFS-extensions.patch
- up to 3.0.20a
[packages/samba.git] / samba-CIFS-extensions.patch
1 diff -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
20 diff -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.073991 seconds and 3 git commands to generate.