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
5 changed files with 8 additions and 9 deletions
Showing only changes of commit 23af379bfb - Show all commits
+1 -1
View File
@@ -159,7 +159,7 @@ Chunk* directory_scanner_next(DirectoryScanner* scanner) {
char* cur_path = path_cat(scanner->current_path, entry->d_name); char* cur_path = path_cat(scanner->current_path, entry->d_name);
struct stat stats; struct stat stats;
if (stat(cur_path, &stats) != 0) { if (lstat(cur_path, &stats) != 0) {
free(cur_path); free(cur_path);
continue; continue;
} }
+1 -1
View File
@@ -1,6 +1,6 @@
#include "data.h" #include "data.h"
#include "log.h" #include "log.h"
#include "stdlib.h" #include <stdlib.h>
Data* data_create_empty(size_t data_size) { Data* data_create_empty(size_t data_size) {
/* malloc(0) is UB; allocate at least 1 byte but preserve requested size */ /* malloc(0) is UB; allocate at least 1 byte but preserve requested size */
+2 -2
View File
@@ -178,7 +178,7 @@ bool send_data(int file_descriptor, const Data* data) {
return false; return false;
if (!send_n_data(file_descriptor, data->data, data_size)) if (!send_n_data(file_descriptor, data->data, data_size))
return false; return false;
log_message(LOG_LEVEL_DEBUG, "Send %lld data", data_size); log_message(LOG_LEVEL_DEBUG, "Send %llu data", data_size);
return true; return true;
} }
@@ -193,7 +193,7 @@ Data* receive_data(int file_descriptor) {
free(data); free(data);
return NULL; return NULL;
} }
log_message(LOG_LEVEL_DEBUG, "Received %lld data", size); log_message(LOG_LEVEL_DEBUG, "Received %llu data", size);
return data_create(data, (size_t)size); return data_create(data, (size_t)size);
} }
+3 -4
View File
@@ -158,18 +158,17 @@ void delete_extras(const char* dest_root, ArrayList* manifest) {
delete_extras_walk(dest_root, "", manifest); delete_extras_walk(dest_root, "", manifest);
} }
char* path_cat(const char* path1, char* path2) { char* path_cat(const char* path1, const char* path2) {
if (path1 == NULL || *path1 == '\0') if (path1 == NULL || *path1 == '\0')
return str_dup(path2); return str_dup(path2);
if (path2 == NULL || *path2 == '\0') if (path2 == NULL || *path2 == '\0')
return str_dup(path1); return str_dup(path1);
int path1_len = strlen(path1); int path1_len = strlen(path1);
int path2_len = strlen(path2); int path2_len = strlen(path2);
char* path2_pointer = path2;
if (path1[path1_len - 1] == '/') if (path1[path1_len - 1] == '/')
path1_len -= 1; path1_len -= 1;
if (path2[0] == '/') { if (path2[0] == '/') {
path2_pointer += 1; path2++;
path2_len -= 1; path2_len -= 1;
} }
char* new_path = malloc(path1_len + path2_len + 2); char* new_path = malloc(path1_len + path2_len + 2);
@@ -177,7 +176,7 @@ char* path_cat(const char* path1, char* path2) {
return NULL; return NULL;
memcpy(new_path, path1, path1_len); memcpy(new_path, path1, path1_len);
new_path[path1_len] = '/'; new_path[path1_len] = '/';
memcpy(new_path + path1_len + 1, path2_pointer, path2_len); memcpy(new_path + path1_len + 1, path2, path2_len);
new_path[path1_len + path2_len + 1] = '\0'; new_path[path1_len + path2_len + 1] = '\0';
return new_path; return new_path;
} }
+1 -1
View File
@@ -6,7 +6,7 @@
bool mkdir_r(const char* path); bool mkdir_r(const char* path);
char* str_dup(const char* string); char* str_dup(const char* string);
char* path_cat(const char* path1, char* path2); char* path_cat(const char* path1, const char* path2);
bool glob_match(const char* pattern, const char* str); bool glob_match(const char* pattern, const char* str);
void delete_extras(const char* dest_root, ArrayList* manifest); void delete_extras(const char* dest_root, ArrayList* manifest);