]> CyberLeo.Net >> Repos - CDN/cdn-ports-overlay.git/blob - cdn/ports/net/rsync/files/patch-server_pause_and_chroot.patch
net/rsync: update patch to chroot before chdiring
[CDN/cdn-ports-overlay.git] / cdn / ports / net / rsync / files / patch-server_pause_and_chroot.patch
1 --- rsync.h.orig        2019-11-26 00:32:00.801993000 +0000
2 +++ rsync.h     2019-11-26 00:31:26.661675000 +0000
3 @@ -24,6 +24,10 @@
4  #define BLOCK_SIZE 700
5  #define RSYNC_RSH_ENV "RSYNC_RSH"
6  #define RSYNC_RSH_IO_ENV "RSYNC_RSH_IO"
7 +/* CyberLeo: Envvar to set pause length for rsync --server */
8 +#define RSYNC_SERVER_PAUSE_ENV "RSYNC_SERVER_PAUSE"
9 +/* CyberLeo: Envvar to set chroot directory for rsync --server */
10 +#define RSYNC_SERVER_CHROOT_ENV "RSYNC_SERVER_CHROOT"
11  
12  #define RSYNC_NAME "rsync"
13  /* RSYNCD_SYSCONF is now set in config.h */
14 --- main.c.orig 2019-11-26 00:32:10.867959000 +0000
15 +++ main.c      2019-11-25 21:40:37.773176000 +0000
16 @@ -1116,6 +1117,29 @@
17         set_nonblocking(f_in);
18         set_nonblocking(f_out);
19  
20 +       /* CyberLeo: Sleep here for RSYNC_SERVER_PAUSE_ENV seconds */
21 +       const char *rsync_server_pause = getenv(RSYNC_SERVER_PAUSE_ENV);
22 +       if (rsync_server_pause)
23 +               sleep(atoi(rsync_server_pause));
24 +
25 +       /* CyberLeo: Chroot into RSYNC_SERVER_CHROOT_ENV before running */
26 +       const char *rsync_server_chroot = getenv(RSYNC_SERVER_CHROOT_ENV);
27 +       if (rsync_server_chroot)
28 +       {
29 +               if (0 > chroot(rsync_server_chroot))
30 +               {
31 +                       fprintf(stderr, "chroot(%s): ", rsync_server_chroot);
32 +                       perror("");
33 +                       exit(4);
34 +               }
35 +               if (0 > chdir("/"))
36 +               {
37 +                       fprintf(stderr, "chdir(%s): ", rsync_server_chroot);
38 +                       perror("");
39 +                       exit(4);
40 +               }
41 +       }
42 +               
43         io_set_sock_fds(f_in, f_out);
44         setup_protocol(f_out, f_in);
45  
46