diff --git a/src/66/66-tree.c b/src/66/66-tree.c index b78e9b7f139afee99c6391600a8a956c7cd52cac..2247c684bd56c67b875b27568148966649e25fb2 100644 --- a/src/66/66-tree.c +++ b/src/66/66-tree.c @@ -337,13 +337,13 @@ int set_rules(char const *tree,uid_t *uids, size_t uidn,unsigned int what) uint32_pack(pack,uids[i+1]) ; pack[uint_fmt(pack,uids[i+1])] = 0 ; char ut[treelen + SS_RULES_LEN + 1 + uint_fmt(pack,uids[i+1]) + 1] ; - r = dir_search(tmp,pack,S_IFREG) ; - if (r) + memcpy(ut,tmp,treelen + SS_RULES_LEN) ; + memcpy(ut + treelen + SS_RULES_LEN,"/",1) ; + memcpy(ut + treelen + SS_RULES_LEN + 1,pack,uint_fmt(pack,uids[i+1])) ; + ut[treelen + SS_RULES_LEN + 1 + uint_fmt(pack,uids[i + 1])] = 0 ; + r = scan_mode(tmp,S_IFREG) ; + if (r == 1) { - memcpy(ut,tmp,treelen + SS_RULES_LEN) ; - memcpy(ut + treelen + SS_RULES_LEN,"/",1) ; - memcpy(ut + treelen + SS_RULES_LEN + 1,pack,uint_fmt(pack,uids[i+1])) ; - ut[treelen + SS_RULES_LEN + 1 + uint_fmt(pack,uids[i + 1])] = 0 ; log_trace("unlink: ",ut) ; r = unlink(ut) ; if (r == -1) return 0 ;