Merge remaining 4 PRs: memory safety, refactoring, test coverage, integration cleanup #93

Merged
TapTap merged 37 commits from merge-all into main 2026-07-21 16:08:39 +02:00
4 changed files with 29 additions and 1 deletions
Showing only changes of commit 62f3df94ee - Show all commits
+1 -1
View File
@@ -44,7 +44,7 @@ typedef struct Config {
bool partial;
} Config;
#define PROTOCOL_VERSION "1.3.0"
#define PROTOCOL_VERSION "2.0.0"
#define DEFAULT_CHUNK_SIZE (10 * 1024 * 1024)
Config* config_create(char* version, char* send_directory, char* receive_directory,
+1
View File
@@ -1,4 +1,5 @@
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <libgen.h>
#include <stddef.h>
+13
View File
@@ -11,6 +11,19 @@
#include <time.h>
#include <unistd.h>
/*
* Wire format serialization (protocol version 2.0.0+):
* All metadata fields are serialized as fixed-width integers (int32_t / int64_t)
* to ensure cross-platform binary compatiblity. See metadata.h for the
* exact wire layout.
*
* Compile-time assertions verify that the native platform types fit within
* the chosen fixed-width representations.
*/
typedef char static_assert_mode_t_fits[(sizeof(mode_t) <= sizeof(int32_t)) ? 1 : -1];
typedef char static_assert_uid_t_fits[(sizeof(uid_t) <= sizeof(int32_t)) ? 1 : -1];
typedef char static_assert_gid_t_fits[(sizeof(gid_t) <= sizeof(int32_t)) ? 1 : -1];
void metadata_to_buf(char** buf, const FileMetadata* m) {
int32_t present = (m != NULL) ? 1 : 0;
memcpy(*buf, &present, sizeof(present));
+14
View File
@@ -6,6 +6,20 @@
#include <stdint.h>
#include <sys/stat.h>
/*
* Wire format (introduced in protocol version 2.0.0):
* int32_t present
* int32_t mode (was mode_t, platform-dependent)
* int32_t uid (was uid_t, platform-dependent)
* int32_t gid (was gid_t, platform-dependent)
* int64_t mtime_sec (was time_t, platform-dependent)
* int64_t mtime_nsec (was long, platform-dependent)
*
* Prior to 2.0.0 the wire format used the raw platform-dependent types,
* which broke compatiblity across different systems. All fields are now
* serialized as fixed-width integers.
*/
#define FILE_METADATA_WIRE_SIZE (sizeof(int32_t) * 3 + sizeof(int64_t) * 2)
void metadata_to_buf(char** buf, const FileMetadata* m);