Skip to content

Fix split_shell_words handling of empty quoted arguments#1840

Merged
oferchen merged 1 commit into
masterfrom
implement-rsync-3.4.1-functional-parity
Nov 1, 2025
Merged

Fix split_shell_words handling of empty quoted arguments#1840
oferchen merged 1 commit into
masterfrom
implement-rsync-3.4.1-functional-parity

Conversation

@oferchen
Copy link
Copy Markdown
Owner

@oferchen oferchen commented Nov 1, 2025

Summary

  • ensure split_shell_words preserves empty arguments emitted by empty quotes
  • extend the integration tests to cover empty single- and double-quoted inputs

Testing

  • cargo test split_shell_words -- test

https://chatgpt.com/codex/tasks/task_e_6905680d93608323a54fa37f68fd4ae0

@oferchen oferchen merged commit e1ef0ff into master Nov 1, 2025
@oferchen oferchen deleted the implement-rsync-3.4.1-functional-parity branch November 1, 2025 02:05
oferchen added a commit that referenced this pull request Apr 29, 2026
…3424)

Maps every upstream rsync 3.4.1 iconv call site (in flist.c, io.c, rsync.c,
log.c, compat.c) to its oc-rsync counterpart and flags the gaps. Findings:

- Critical: --iconv is end-to-end inert because no production code converts
  IconvSetting into a FilenameConverter or calls
  ServerConfigBuilder::iconv(...).
- High: receiver and sender symlink targets bypass iconv (flist read/write
  extras).
- High: --files-from forwarding and --secluded-args/--protect-args bypass
  iconv on both sides.
- Medium: capability string unconditionally advertises 's' (CF_SYMLINK_ICONV)
  regardless of iconv configuration.
- Low: log lines are not transcoded.

The set is interlocked, so this PR ships the audit document only and links
follow-ups for each finding rather than making a partial change.
oferchen added a commit that referenced this pull request May 1, 2026
…3424)

Maps every upstream rsync 3.4.1 iconv call site (in flist.c, io.c, rsync.c,
log.c, compat.c) to its oc-rsync counterpart and flags the gaps. Findings:

- Critical: --iconv is end-to-end inert because no production code converts
  IconvSetting into a FilenameConverter or calls
  ServerConfigBuilder::iconv(...).
- High: receiver and sender symlink targets bypass iconv (flist read/write
  extras).
- High: --files-from forwarding and --secluded-args/--protect-args bypass
  iconv on both sides.
- Medium: capability string unconditionally advertises 's' (CF_SYMLINK_ICONV)
  regardless of iconv configuration.
- Low: log lines are not transcoded.

The set is interlocked, so this PR ships the audit document only and links
follow-ups for each finding rather than making a partial change.
oferchen added a commit that referenced this pull request May 5, 2026
…3424)

Maps every upstream rsync 3.4.1 iconv call site (in flist.c, io.c, rsync.c,
log.c, compat.c) to its oc-rsync counterpart and flags the gaps. Findings:

- Critical: --iconv is end-to-end inert because no production code converts
  IconvSetting into a FilenameConverter or calls
  ServerConfigBuilder::iconv(...).
- High: receiver and sender symlink targets bypass iconv (flist read/write
  extras).
- High: --files-from forwarding and --secluded-args/--protect-args bypass
  iconv on both sides.
- Medium: capability string unconditionally advertises 's' (CF_SYMLINK_ICONV)
  regardless of iconv configuration.
- Low: log lines are not transcoded.

The set is interlocked, so this PR ships the audit document only and links
follow-ups for each finding rather than making a partial change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant