diff options
author | Wayne Davison <wayned@samba.org> | 2008-02-14 13:24:16 -0800 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2008-02-15 17:39:21 -0800 |
commit | 0b52f94da727c4881b58c1cd6f2cf2a824e02b30 (patch) | |
tree | 536c0b7111e0868944e7735d09c1bd260ac30aef /uidlist.c | |
parent | f96bac8468f483d99cd150d22f235e2e8dc5ed92 (diff) | |
download | rsync-0b52f94da727c4881b58c1cd6f2cf2a824e02b30.tar.gz |
Some daemon security improvements, including the new parameters
"charset" and "numeric ids".
Diffstat (limited to 'uidlist.c')
-rw-r--r-- | uidlist.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -316,6 +316,10 @@ uid_t recv_user_name(int f, uid_t uid) if (!name) out_of_memory("recv_user_name"); read_sbuf(f, name, len); + if (numeric_ids < 0) { + free(name); + name = NULL; + } node = recv_add_uid(uid, name); /* node keeps name's memory */ return node->id2; } @@ -328,6 +332,10 @@ gid_t recv_group_name(int f, gid_t gid, uint16 *flags_ptr) if (!name) out_of_memory("recv_group_name"); read_sbuf(f, name, len); + if (numeric_ids < 0) { + free(name); + name = NULL; + } node = recv_add_gid(gid, name); /* node keeps name's memory */ if (flags_ptr && node->flags & FLAG_SKIP_GROUP) *flags_ptr |= FLAG_SKIP_GROUP; @@ -341,13 +349,13 @@ void recv_id_list(int f, struct file_list *flist) id_t id; int i; - if ((preserve_uid || preserve_acls) && !numeric_ids) { + if ((preserve_uid || preserve_acls) && numeric_ids <= 0) { /* read the uid list */ while ((id = read_varint30(f)) != 0) recv_user_name(f, id); } - if ((preserve_gid || preserve_acls) && !numeric_ids) { + if ((preserve_gid || preserve_acls) && numeric_ids <= 0) { /* read the gid list */ while ((id = read_varint30(f)) != 0) recv_group_name(f, id, NULL); |