Release v2.26.0 #284

Merged
TapTap merged 210 commits from dev into main 2026-09-18 19:05:52 +02:00
3 changed files with 12 additions and 3 deletions
Showing only changes of commit ea2f76cd7a - Show all commits
+5
View File
@@ -517,6 +517,11 @@ static int parse_skip_compress(Config* config, const char* value) {
token[--len] = '\0'; token[--len] = '\0';
if (len == 0) if (len == 0)
continue; continue;
if (config->skip_compress_count >= MAX_SKIP_COMPRESS_SUFFIXES) {
fprintf(stderr, "--skip-compress supports at most %d suffixes\n", MAX_SKIP_COMPRESS_SUFFIXES);
free(list);
return -1;
}
if (config_add_pattern(&config->skip_compress_suffixes, &config->skip_compress_count, token, if (config_add_pattern(&config->skip_compress_suffixes, &config->skip_compress_count, token,
"--skip-compress") != 0) { "--skip-compress") != 0) {
free(list); free(list);
+6 -2
View File
@@ -2274,7 +2274,11 @@ bool dir_time_list_add(DirTimeList* list, const char* wire_path, const FileMetad
touching the list, leaving it exactly as it was (the caller fails the touching the list, leaving it exactly as it was (the caller fails the
transfer, which becomes a clean protocol error). */ transfer, which becomes a clean protocol error). */
size_t path_len = strlen(wire_path); size_t path_len = strlen(wire_path);
if (list->count >= MAX_DIR_TIME_ENTRIES || path_len > MAX_DIR_TIME_BYTES - list->bytes) /* Charge the whole per-entry cost (path copy + pointer slot + metadata
struct), not just the path, so the array growth is bounded by the same
cumulative budget. */
size_t entry_cost = path_len + sizeof(FileMetadata) + sizeof(char*);
if (list->count >= MAX_DIR_TIME_ENTRIES || entry_cost > MAX_DIR_TIME_BYTES - list->bytes)
return false; return false;
if (list->count == list->capacity) { if (list->count == list->capacity) {
size_t new_capacity = list->capacity == 0 ? 16 : list->capacity * 2; size_t new_capacity = list->capacity == 0 ? 16 : list->capacity * 2;
@@ -2302,7 +2306,7 @@ bool dir_time_list_add(DirTimeList* list, const char* wire_path, const FileMetad
list->paths[list->count] = copy; list->paths[list->count] = copy;
list->entries[list->count] = *metadata; list->entries[list->count] = *metadata;
list->count++; list->count++;
list->bytes += path_len; list->bytes += entry_cost;
return true; return true;
} }
+1 -1
View File
@@ -1396,7 +1396,7 @@ static void test_dir_time_list_cap() {
EXPECT_TRUE(list.bytes == before_bytes); EXPECT_TRUE(list.bytes == before_bytes);
} else { } else {
EXPECT_TRUE(list.count == before_count + 1); EXPECT_TRUE(list.count == before_count + 1);
EXPECT_TRUE(list.bytes == before_bytes + path_len); EXPECT_TRUE(list.bytes == before_bytes + path_len + sizeof(FileMetadata) + sizeof(char*));
} }
} }
EXPECT_TRUE(rejected); EXPECT_TRUE(rejected);