Use generic access, default to read-only.

This commit is contained in:
Michael Jumper 2013-09-11 08:52:36 -07:00
parent cf3196d8ca
commit 95230ae901
2 changed files with 19 additions and 14 deletions

View File

@ -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)

View File

@ -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