Use generic access, default to read-only.
This commit is contained in:
parent
cf3196d8ca
commit
95230ae901
@ -128,21 +128,23 @@ int guac_rdpdr_fs_open(guac_rdpdr_device* device, const char* path,
|
|||||||
if (data->open_files >= GUAC_RDPDR_FS_MAX_FILES)
|
if (data->open_files >= GUAC_RDPDR_FS_MAX_FILES)
|
||||||
return GUAC_RDPDR_FS_ENFILE;
|
return GUAC_RDPDR_FS_ENFILE;
|
||||||
|
|
||||||
/* If path is empty or relative, the file does not exist */
|
/* If path empty, transform to root path */
|
||||||
if (path[0] != '\\')
|
if (path[0] == '\0')
|
||||||
|
path = "\\";
|
||||||
|
|
||||||
|
/* If path is relative, the file does not exist */
|
||||||
|
else if (path[0] != '\\')
|
||||||
return GUAC_RDPDR_FS_ENOENT;
|
return GUAC_RDPDR_FS_ENOENT;
|
||||||
|
|
||||||
/* Translate access into mode */
|
/* Translate access into mode */
|
||||||
if (access & ACCESS_FILE_READ_DATA) {
|
if (access & ACCESS_GENERIC_ALL)
|
||||||
if (access & (ACCESS_FILE_WRITE_DATA | ACCESS_FILE_APPEND_DATA))
|
|
||||||
mode = O_RDWR;
|
mode = O_RDWR;
|
||||||
else
|
else if (access & (ACCESS_GENERIC_WRITE | ACCESS_GENERIC_READ))
|
||||||
mode = O_RDONLY;
|
mode = O_RDWR;
|
||||||
}
|
else if (access & ACCESS_GENERIC_WRITE)
|
||||||
else if (access & (ACCESS_FILE_WRITE_DATA | ACCESS_FILE_APPEND_DATA))
|
|
||||||
mode = O_WRONLY;
|
mode = O_WRONLY;
|
||||||
else
|
else
|
||||||
return GUAC_RDPDR_FS_ENOENT; /* FIXME: Replace with real return value */
|
mode = O_RDONLY;
|
||||||
|
|
||||||
/* If append access requested, add appropriate option */
|
/* If append access requested, add appropriate option */
|
||||||
if (access & ACCESS_FILE_APPEND_DATA)
|
if (access & ACCESS_FILE_APPEND_DATA)
|
||||||
|
@ -90,6 +90,9 @@
|
|||||||
/*
|
/*
|
||||||
* Access constants.
|
* Access constants.
|
||||||
*/
|
*/
|
||||||
|
#define ACCESS_GENERIC_READ 0x80000000
|
||||||
|
#define ACCESS_GENERIC_WRITE 0x40000000
|
||||||
|
#define ACCESS_GENERIC_ALL 0x10000000
|
||||||
#define ACCESS_FILE_READ_DATA 0x00000001
|
#define ACCESS_FILE_READ_DATA 0x00000001
|
||||||
#define ACCESS_FILE_WRITE_DATA 0x00000002
|
#define ACCESS_FILE_WRITE_DATA 0x00000002
|
||||||
#define ACCESS_FILE_APPEND_DATA 0x00000004
|
#define ACCESS_FILE_APPEND_DATA 0x00000004
|
||||||
|
Loading…
Reference in New Issue
Block a user