X-Git-Url: http://git.jankratochvil.net/?p=captive.git;a=blobdiff_plain;f=src%2Flibcaptive%2Fclient%2Ffile-slave.c;h=aeca8e834772279e13195f45195c1c6dfb92a214;hp=fac5eef18c5f1fc3ee196fcda31b8017f83f7179;hb=b94095a878e67492771b2bc956fafb1cb74d9da9;hpb=401bfa7d9b8deacbcea53a97f10c5b025121e592 diff --git a/src/libcaptive/client/file-slave.c b/src/libcaptive/client/file-slave.c index fac5eef..aeca8e8 100644 --- a/src/libcaptive/client/file-slave.c +++ b/src/libcaptive/client/file-slave.c @@ -40,6 +40,7 @@ /* Config: */ +#define MAX_FILE_READ 0x1000000 /* FIXME: Workaround memory consumption for non-journalled fastfat.sys */ #define MAX_FILE_WRITTEN 0x100000 /* FIXME: Workaround memory consumption for non-journalled fastfat.sys */ @@ -298,6 +299,7 @@ NTSTATUS err; IO_STATUS_BLOCK file_IoStatusBlock; LARGE_INTEGER file_offset; GnomeVFSResult errvfsresult; +static GnomeVFSFileSize total_read=0; g_return_val_if_fail(CAPTIVE_FILE_SLAVE_IS_OBJECT(captive_file_object),GNOME_VFS_ERROR_BAD_PARAMETERS); g_return_val_if_fail(buffer!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS); @@ -308,6 +310,11 @@ GnomeVFSResult errvfsresult; g_return_val_if_fail(captive_file_slave_object->file_Handle!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS); + /* FIXME: Workaround memory consumption for non-journalled fastfat.sys */ + if (total_read>=MAX_FILE_READ && captive_options->sandbox) + return GNOME_VFS_ERROR_SERVICE_OBSOLETE; + total_read+=num_bytes; + file_offset.QuadPart=captive_file_slave_object->offset; err=NtReadFile( captive_file_slave_object->file_Handle, /* FileHandle */