Annotation of src/usr.bin/rsync/TODO.md, Revision 1.3
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:
1.3 ! benno 11: - Easy: speed up the uid/gid mapping/remapping with a simple table.
! 12: Right now, the code in
! 13: [ids.c](https://github.com/kristapsdz/openrsync/blob/master/ids.c)
! 14: is simple, but could easily bottleneck with a large number of groups
! 15: and files with **-g**.
! 16:
1.2 benno 17: - Easy: add a hashtable to `blk_find()` in
1.1 benno 18: [blocks.c](https://github.com/kristapsdz/openrsync/blob/master/blocks.c)
19: for quickly looking up fast-hash matches.
20:
21: - Easy: print more statistics, such as transfer times and rates.
22:
1.2 benno 23: - Easy: tighten the [pledge(2)](https://man.openbsd.org/pledge.2) and
1.1 benno 24: [unveil(2)](https://man.openbsd.org/unveil.2) to work with **-n**, as
25: it does not touch files.
26:
27: - Easy: find the shared path for all input files and
28: [unveil(2)](https://man.openbsd.org/unveil.2) only the shared path
29: instead of each one.
30:
31: - Medium: have the log messages when multiplex writing (server mode) is
32: enabled by flushed out through the multiplex channel.
33: Right now, they're emitted on `stderr` just like with the client.
34:
35: - Medium: porting the security precautions
36: ([unveil(2)](https://man.openbsd.org/unveil.2),
37: [pledge(2)](https://man.openbsd.org/pledge.2)) to
38: [FreeBSD](https://www.freebsd.org)'s
39: [Capsicum](https://wiki.freebsd.org/Capsicum).
40: Without this in place, you're exposing your file-system to whatever is
41: coming down over the wire.
42: This is certainly possible, as openrsync makes exclusive use of the "at"
43: functions (e.g., [openat(2)](https://man.openbsd.org/openat.2)) for working
44: with files.
45:
46: - Hard: the same, but for Linux.
47:
48: Above all, `grep FIXME *.c *.h` and start from there.