summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2019-07-27 12:40:06 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2019-07-27 12:40:06 +0200
commit3078c9460c62d2acbcea9c9a5eab6d666fad79e9 (patch)
tree8d4095f11338ffb1637eb272a592e2d555724e31
parent3834e9e19d0cf6ff5dfbaec9500308e4b79da23b (diff)
Catch LFS64 inconsistencies in RPC server stubs
* libdiskfs/diskfs.h (protid_t): New type (diskfs_S_io_write, diskfs_S_io_read, diskfs_S_io_seek, diskfs_S_io_stat, diskfs_S_file_set_size, diskfs_S_file_get_storage_info, diskfs_S_file_statfs): New prototypes. * libnetfs/netfs.h (netfs_S_io_write, netfs_S_io_read, netfs_S_io_seek, netfs_S_io_stat, netfs_S_file_set_size, netfs_S_file_get_storage_info, netfs_S_file_statfs): New prototypes. * libtrivfs/trivfs.h (trivfs_S_io_write, trivfs_S_io_read, trivfs_S_io_seek, trivfs_S_io_stat, trivfs_S_file_set_size, trivfs_S_file_get_storage_info, trivfs_S_file_statfs): New prototypes.
-rw-r--r--libdiskfs/diskfs.h44
-rw-r--r--libnetfs/netfs.h41
-rw-r--r--libtrivfs/trivfs.h56
3 files changed, 141 insertions, 0 deletions
diff --git a/libdiskfs/diskfs.h b/libdiskfs/diskfs.h
index 4fdeaac2..c949ec07 100644
--- a/libdiskfs/diskfs.h
+++ b/libdiskfs/diskfs.h
@@ -1159,4 +1159,48 @@ struct store *diskfs_init_main (struct argp *startup_argp,
/* Make errors go somewhere reasonable. */
void diskfs_console_stdio ();
+
+/* The following extracts from io_S.h and fs_S.h catch loff_t erroneously
+ written off_t and stat64 erroneously written stat,
+ or missing -D_FILE_OFFSET_BITS=64 build flag. */
+
+typedef struct protid *protid_t;
+
+kern_return_t diskfs_S_io_write (protid_t io_object,
+ data_t data,
+ mach_msg_type_number_t dataCnt,
+ loff_t offset,
+ vm_size_t *amount);
+
+kern_return_t diskfs_S_io_read (protid_t io_object,
+ data_t *data,
+ mach_msg_type_number_t *dataCnt,
+ loff_t offset,
+ vm_size_t amount);
+
+kern_return_t diskfs_S_io_seek (protid_t io_object,
+ loff_t offset,
+ int whence,
+ loff_t *newp);
+
+kern_return_t diskfs_S_io_stat (protid_t stat_object,
+ io_statbuf_t *stat_info);
+
+kern_return_t diskfs_S_file_set_size (protid_t trunc_file,
+ loff_t new_size);
+
+kern_return_t diskfs_S_file_get_storage_info (protid_t file,
+ portarray_t *ports,
+ mach_msg_type_name_t *portsPoly,
+ mach_msg_type_number_t *portsCnt,
+ intarray_t *ints,
+ mach_msg_type_number_t *intsCnt,
+ off_array_t *offsets,
+ mach_msg_type_number_t *offsetsCnt,
+ data_t *data,
+ mach_msg_type_number_t *dataCnt);
+
+kern_return_t diskfs_S_file_statfs (protid_t file,
+ fsys_statfsbuf_t *info);
+
#endif /* hurd/diskfs.h */
diff --git a/libnetfs/netfs.h b/libnetfs/netfs.h
index 3d51b74b..625aa963 100644
--- a/libnetfs/netfs.h
+++ b/libnetfs/netfs.h
@@ -482,5 +482,46 @@ extern auth_t netfs_auth_server_port;
typedef struct protid *protid_t;
typedef struct netfs_control *control_t;
+
+/* The following extracts from io_S.h and fs_S.h catch loff_t erroneously
+ written off_t and stat64 erroneously written stat,
+ or missing -D_FILE_OFFSET_BITS=64 build flag. */
+
+kern_return_t netfs_S_io_write (protid_t io_object,
+ data_t data,
+ mach_msg_type_number_t dataCnt,
+ loff_t offset,
+ vm_size_t *amount);
+
+kern_return_t netfs_S_io_read (protid_t io_object,
+ data_t *data,
+ mach_msg_type_number_t *dataCnt,
+ loff_t offset,
+ vm_size_t amount);
+
+kern_return_t netfs_S_io_seek (protid_t io_object,
+ loff_t offset,
+ int whence,
+ loff_t *newp);
+
+kern_return_t netfs_S_io_stat (protid_t stat_object,
+ io_statbuf_t *stat_info);
+
+kern_return_t netfs_S_file_set_size (protid_t trunc_file,
+ loff_t new_size);
+
+kern_return_t netfs_S_file_get_storage_info (protid_t file,
+ portarray_t *ports,
+ mach_msg_type_name_t *portsPoly,
+ mach_msg_type_number_t *portsCnt,
+ intarray_t *ints,
+ mach_msg_type_number_t *intsCnt,
+ off_array_t *offsets,
+ mach_msg_type_number_t *offsetsCnt,
+ data_t *data,
+ mach_msg_type_number_t *dataCnt);
+
+kern_return_t netfs_S_file_statfs (protid_t file,
+ fsys_statfsbuf_t *info);
#endif /* _HURD_NETFS_H_ */
diff --git a/libtrivfs/trivfs.h b/libtrivfs/trivfs.h
index ddeb29a8..1f0c5071 100644
--- a/libtrivfs/trivfs.h
+++ b/libtrivfs/trivfs.h
@@ -252,4 +252,60 @@ void trivfs_remove_port_bucket (struct port_bucket *bucket);
typedef struct trivfs_protid *trivfs_protid_t;
typedef struct trivfs_control *trivfs_control_t;
+
+/* The following extracts from io_S.h and fs_S.h catch loff_t erroneously
+ written off_t and stat64 erroneously written stat,
+ or missing -D_FILE_OFFSET_BITS=64 build flag. */
+
+kern_return_t trivfs_S_io_write (trivfs_protid_t io_object,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ data_t data,
+ mach_msg_type_number_t dataCnt,
+ loff_t offset,
+ vm_size_t *amount);
+
+kern_return_t trivfs_S_io_read (trivfs_protid_t io_object,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ data_t *data,
+ mach_msg_type_number_t *dataCnt,
+ loff_t offset,
+ vm_size_t amount);
+
+kern_return_t trivfs_S_io_seek (trivfs_protid_t io_object,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ loff_t offset,
+ int whence,
+ loff_t *newp);
+
+kern_return_t trivfs_S_io_stat (trivfs_protid_t stat_object,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ io_statbuf_t *stat_info);
+
+kern_return_t trivfs_S_file_set_size (trivfs_protid_t trunc_file,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ loff_t new_size);
+
+kern_return_t trivfs_S_file_get_storage_info (trivfs_protid_t file,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ portarray_t *ports,
+ mach_msg_type_name_t *portsPoly,
+ mach_msg_type_number_t *portsCnt,
+ intarray_t *ints,
+ mach_msg_type_number_t *intsCnt,
+ off_array_t *offsets,
+ mach_msg_type_number_t *offsetsCnt,
+ data_t *data,
+ mach_msg_type_number_t *dataCnt);
+
+kern_return_t trivfs_S_file_statfs (trivfs_protid_t file,
+ mach_port_t reply,
+ mach_msg_type_name_t replyPoly,
+ fsys_statfsbuf_t *info);
+
#endif /* __TRIVFS_H__ */