git://git.jankratochvil.net
/
captive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Force sandbox commit on each 16MB read.
[captive.git]
/
src
/
libcaptive
/
client
/
file-slave.c
diff --git
a/src/libcaptive/client/file-slave.c
b/src/libcaptive/client/file-slave.c
index
fac5eef
..
aeca8e8
100644
(file)
--- a/
src/libcaptive/client/file-slave.c
+++ b/
src/libcaptive/client/file-slave.c
@@
-40,6
+40,7
@@
/* Config: */
/* 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 */
#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;
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);
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);
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 */
file_offset.QuadPart=captive_file_slave_object->offset;
err=NtReadFile(
captive_file_slave_object->file_Handle, /* FileHandle */