]>
Commit | Line | Data |
---|---|---|
2e6194c4 | 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; |