Annotation of src/usr.bin/rsync/TODO.md, Revision 1.1
1.1 ! benno 1: This is a list of possible work projects within openrsync, rated by difficulty.
! 2:
! 3: First, porting: see
! 4: [Porting](https://github.com/kristapsdz/openrsync/blob/master/README.md#Portability)
! 5: for information on this topic.
! 6: I've included the specific security porting topics below.
! 7:
! 8: This list also does not include adding support for features (e.g., **-u** and
! 9: so on).
! 10:
! 11: - Easy: add a hashtable to `blk_find()` in
! 12: [blocks.c](https://github.com/kristapsdz/openrsync/blob/master/blocks.c)
! 13: for quickly looking up fast-hash matches.
! 14:
! 15: - Easy: print more statistics, such as transfer times and rates.
! 16:
! 17: - Easy: tighten the [pledge(2)](https://man.openbsd.org/pledge.2) and
! 18: [unveil(2)](https://man.openbsd.org/unveil.2) to work with **-n**, as
! 19: it does not touch files.
! 20:
! 21: - Easy: find the shared path for all input files and
! 22: [unveil(2)](https://man.openbsd.org/unveil.2) only the shared path
! 23: instead of each one.
! 24:
! 25: - Medium: have the log messages when multiplex writing (server mode) is
! 26: enabled by flushed out through the multiplex channel.
! 27: Right now, they're emitted on `stderr` just like with the client.
! 28:
! 29: - Medium: porting the security precautions
! 30: ([unveil(2)](https://man.openbsd.org/unveil.2),
! 31: [pledge(2)](https://man.openbsd.org/pledge.2)) to
! 32: [FreeBSD](https://www.freebsd.org)'s
! 33: [Capsicum](https://wiki.freebsd.org/Capsicum).
! 34: Without this in place, you're exposing your file-system to whatever is
! 35: coming down over the wire.
! 36: This is certainly possible, as openrsync makes exclusive use of the "at"
! 37: functions (e.g., [openat(2)](https://man.openbsd.org/openat.2)) for working
! 38: with files.
! 39:
! 40: - Hard: the same, but for Linux.
! 41:
! 42: Above all, `grep FIXME *.c *.h` and start from there.