1.1 --- a/client/file.cc Sat Apr 03 00:02:41 2021 +0200
1.2 +++ b/client/file.cc Sun Apr 04 01:19:22 2021 +0200
1.3 @@ -53,6 +53,9 @@
1.4
1.5 long file_context(file_t *file, l4_cap_idx_t server)
1.6 {
1.7 + if (l4_is_invalid_cap(server))
1.8 + return -L4_EINVAL;
1.9 +
1.10 client_Opener opener(server);
1.11 unsigned long size, flags;
1.12 long err;
1.13 @@ -77,11 +80,11 @@
1.14
1.15 /* Open a file using the given structure and context. */
1.16
1.17 -long file_context_open(file_t *file, file_t *context)
1.18 +long file_context_open(file_t *file, flags_t flags, file_t *context)
1.19 {
1.20 client_OpenerContext openercontext(context->ref);
1.21 file_init(file);
1.22 - return openercontext.open(L4_FPAGE_RW, &file->size, &file->ref);
1.23 + return openercontext.open(flags, &file->size, &file->ref);
1.24 }
1.25
1.26 /* Initialise the given file structure. */
1.27 @@ -99,7 +102,7 @@
1.28 filesystem server. This is a convenience function invoking file_context and
1.29 file_context_open. */
1.30
1.31 -long file_open(file_t *file, const char *filename, l4_cap_idx_t server)
1.32 +long file_open(file_t *file, const char *filename, flags_t flags, l4_cap_idx_t server)
1.33 {
1.34 file_t context;
1.35 long err;
1.36 @@ -111,7 +114,7 @@
1.37 if (!file_string_set(&context, filename, 0, NULL))
1.38 return -L4_ENOMEM;
1.39
1.40 - err = file_context_open(file, &context);
1.41 + err = file_context_open(file, flags, &context);
1.42 file_close(&context);
1.43 return err;
1.44 }
1.45 @@ -237,6 +240,9 @@
1.46
1.47 long pipe_open(offset_t size, file_t *reader, file_t *writer, l4_cap_idx_t server)
1.48 {
1.49 + if (l4_is_invalid_cap(server))
1.50 + return -L4_EINVAL;
1.51 +
1.52 client_PipeOpener opener(server);
1.53
1.54 file_init(reader);