1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

nttrans.c: Added FILE_EXECUTE to required permissions checked.

trans2.c: Fixed up the SMB_QUERY_FILE_ALT_NAME_INFO code, now I've
          got an NT client to generate it. It uses unicode without
          bothering to check the unicode bit of course, but now we
          can execute 16 bit exe's on a WinNT client from a long
          filename directory (hurrah).
Jeremy.
This commit is contained in:
Jeremy Allison 0001-01-01 00:00:00 +00:00
parent 0fcf167af8
commit 6c31be7d3f
2 changed files with 13 additions and 11 deletions

View File

@ -325,6 +325,8 @@ static int map_share_mode( uint32 desired_access, uint32 share_access, uint32 fi
if (smb_open_mode == -1) { if (smb_open_mode == -1) {
if(desired_access & DELETE_ACCESS) if(desired_access & DELETE_ACCESS)
smb_open_mode = 2; smb_open_mode = 2;
else if( desired_access & FILE_EXECUTE)
smb_open_mode = 0;
else { else {
DEBUG(0,("map_share_mode: Incorrect value for desired_access = %x\n", DEBUG(0,("map_share_mode: Incorrect value for desired_access = %x\n",
desired_access)); desired_access));

View File

@ -1073,11 +1073,10 @@ static int call_trans2qfsinfo(char *inbuf, char *outbuf, int length, int bufsize
} }
case SMB_QUERY_FS_ATTRIBUTE_INFO: case SMB_QUERY_FS_ATTRIBUTE_INFO:
data_len = 12 + 2*strlen(FSTYPE_STRING); data_len = 12 + 2*strlen(FSTYPE_STRING);
#if 1 /* JRATEST */
SIVAL(pdata,0,FILE_CASE_PRESERVED_NAMES); /* FS ATTRIBUTES */ SIVAL(pdata,0,FILE_CASE_PRESERVED_NAMES); /* FS ATTRIBUTES */
#else /* JRATEST */ #if 0 /* Old code. JRA. */
SIVAL(pdata,0,0x4006); /* FS ATTRIBUTES == long filenames supported? */ SIVAL(pdata,0,0x4006); /* FS ATTRIBUTES == long filenames supported? */
#endif /* JRATEST */ #endif /* Old code. */
SIVAL(pdata,4,128); /* Max filename component length */ SIVAL(pdata,4,128); /* Max filename component length */
SIVAL(pdata,8,2*strlen(FSTYPE_STRING)); SIVAL(pdata,8,2*strlen(FSTYPE_STRING));
PutUniCode(pdata+12,FSTYPE_STRING); PutUniCode(pdata+12,FSTYPE_STRING);
@ -1147,8 +1146,10 @@ static int call_trans2setfsinfo(char *inbuf, char *outbuf, int length, int bufsi
} }
/**************************************************************************** /****************************************************************************
reply to a TRANS2_QFILEINFO (query file info by fileid) Reply to a TRANS2_QFILEPATHINFO or TRANSACT2_QFILEINFO (query file info by
file name or file id).
****************************************************************************/ ****************************************************************************/
static int call_trans2qfilepathinfo(char *inbuf, char *outbuf, int length, static int call_trans2qfilepathinfo(char *inbuf, char *outbuf, int length,
int bufsize,int cnum, int bufsize,int cnum,
char **pparams,char **ppdata, char **pparams,char **ppdata,
@ -1294,19 +1295,18 @@ static int call_trans2qfilepathinfo(char *inbuf, char *outbuf, int length,
case SMB_QUERY_FILE_ALT_NAME_INFO: case SMB_QUERY_FILE_ALT_NAME_INFO:
{ {
pstring short_name; pstring short_name;
pstrcpy(short_name,fname); pstrcpy(short_name,p);
/* Mangle if not already 8.3 */ /* Mangle if not already 8.3 */
if(!is_8_3(short_name, True)) if(!is_8_3(short_name, True))
{ {
if(!name_map_mangle(short_name,True,SNUM(cnum))) if(!name_map_mangle(short_name,True,SNUM(cnum)))
*short_name = '\0'; *short_name = '\0';
} }
strncpy(pdata + 4,short_name,12); strupper(short_name);
(pdata + 4)[12] = 0; l = strlen(short_name);
strupper(pdata + 4); PutUniCode(pdata + 4, short_name);
l = strlen(pdata + 4); data_size = 4 + (2*l);
data_size = 4 + l; SIVAL(pdata,0,2*l);
SIVAL(pdata,0,l);
} }
break; break;