Comprehensive fix: security, bugs, refactoring, tests, and rsync parity features #173
Reference in New Issue
Block a user
Delete Branch "integration/all-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
This PR fixes all open issues across five categories. It merges 5 feature branches into one comprehensive fix:
🔒 Security (#154, #156, #157, #159, #160, #161, #162, #170)
realpath()validation infile_save_to_disk(),lstat()instead ofstat()in delete pathsMAX_DATA_PAYLOAD_SIZE(100MB) andMAX_STRING_SIZE(64KB)ZSTD_CONTENTSIZE_UNKNOWNwith 3× compressed size fallbackSSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITEhandled insend_n_data/receive_n_dataSSL_set1_host()callS_ISLNKindelete_extras_walk()MAX_DELTA_BLOCKS(1M) andMAX_DELTA_INSTRUCTIONS(1M) caps🐛 Bug Fixes (#158, #163, #164, #165, #166, #167, #168, #169)
config_delete()in non-multithreaded handler pathsend_delete_manifest()checks all return valuesreturn -1toreturn 1in all transfer functionsio_sslchanged fromstatictostatic __threadserver_hostdefault handlingreceive_thread()propagatesfile_receive()andreceive_chunk_enqueue()errors🔧 Code Quality (#149, #150, #151, #152)
parse_environment(),parse_args(),validate_config()config_create()→ zero-param with sensible defaultssend_dry_run_manifest()andsend_delete_manifest()strtol()validation in CLI parsing🧪 Test Coverage (#131, #132, #133, #135, #136, #137)
config_send()/config_receive()round-trip, version mismatch🚀 Rsync Parity Features (#120, #121, #122, #127, #128, #129, #130)
--links,--copy-links,--safe-links,--copy-unsafe-links--hard-links,--acls,--xattrs,--devices,--sparse--itemize-changes,--out-format,--info,--debug,--list-only,--human-readable--update,--inplace,--append,--append-verify--delete-excluded,--delete-after,--max-delete--filter,--files-from,--cvs-exclude,--prune-empty-dirs,--relative--rsh,--rsync-path,--temp-dir,--compare-dest,--copy-dest,--link-destTest Results
Closes: #154, #156, #157, #159, #160, #161, #162, #170, #158, #163, #164, #165, #166, #167, #168, #169, #149, #150, #151, #152, #131, #132, #133, #135, #136, #137, #120, #121, #122, #127, #128, #129, #130