summaryrefslogtreecommitdiff
path: root/src/remove.c
AgeCommit message (Collapse)Author
2002-04-27(cycle_check): Add a comment.Jim Meyering
2002-04-27(cycle_check): New function containing code factoredJim Meyering
out of remove_dir. The sole difference is that upon detecting a cycle, rm now dies unconditionally. Before, in interactive mode, it would ask the user whether to continue. (remove_dir): Call cycle_check.
2002-04-25Remove hash table, active_dir_map, used to detect directory cycles.Jim Meyering
Instead, detect them lazily with just O(1) memory. Suggestion from Andi Kleen. (is_power_of_two): New function. (print_nth_dir, make_active_dir_ent): Remove functions. (hash_active_dir_ent, hash_compare_active_dir_ents): Likewise. (remove_dir): Check for cycles here, ... (rm): ... and don't check for cycles here. (rm): Call fspec_get_full_mode here, rather than fspec_get_filetype_mode. We want to get the dev/ino earlier, and at the same time as when we get the file type, to avoid the risk that an attacker would change e.g. a directory to a symlink before we record its dev/ino.
2002-04-22(rm): Call exit with EXIT_FAILURE, not `1'.Jim Meyering
2002-04-22(rm, remove_init, remove_fini): Don't use or evenJim Meyering
initialize the active_dir_map unless --recursive (-r) is specified.
2002-03-10* src/copy.c (copy_reg): Use a more concise diagnostic forJim Meyering
reporting replaced files. This avoids a bug in the code, which mishandled ino_t wider than long. * src/remove.c (remove_dir): Likewise, twice.
2002-03-09(rm) Add comment on new parameter.Jim Meyering
2002-03-08Don't allow a malicious user to trick another user's rm process intoJim Meyering
removing unintended files. In one scenario, if root is removing a hierarchy that is writable by the malicious user, that user may trick root into removing all of `/'. Reported by Wojciech Purczynski. (remove_dir): After chdir `..', call lstat to get the dev/inode of "." and fail if they aren't the same as the old numbers. (remove_cwd_entries): New parameter, `cwd_dev_ino'. (remove_dir): Likewise. (rm): Likewise. Adjust all callers.
2002-02-01(rm): Add a comment.Jim Meyering
2001-11-23Use opaque type, Hash_table, not `struct hash_table'.Jim Meyering
2001-10-05Include hash-pjw.h and remove definition of hash_pjw.Jim Meyering
2001-08-31* src/remove.c: Move true/false definitions and include from here...Jim Meyering
* src/system.h: ...to here.
2001-05-13(dir_name, dir_len): Define to different namesJim Meyering
to avoid shadowing warnings due to new declarations from dirname.h.
2001-05-12Include dirname.h, to get base_nameJim Meyering
2001-02-18`chmod 0 file; rm file' would no longer prompt before removal.Jim Meyering
(remove_file): Revert last change.
2001-01-22(remove_file): Correct an expression to avoid makingJim Meyering
an unnecessary call to euidaccess for each file.
2000-12-25(hash_compare_active_dir_ents): Return explicit `true'Jim Meyering
or `false', rather than relying on implicit int-to-enum cast.
2000-08-08(remove_cwd_entries, rm): Invoke xalloc_die instead of printing our own message.Jim Meyering
2000-07-30(remove_file): Quote the file names that are displayed with --verbose.Jim Meyering
2000-07-30(remove_cwd_entries): Quote one more file name.Jim Meyering
2000-07-23(ASSIGN_STRDUPA): Remove macro definition.Jim Meyering
2000-07-15Convert "`%s'" in format strings to "%s", and wrap eachJim Meyering
corresponding argument in a `quote (...)' call -- if there's only one. If there are more than one, then use `quote_n (0, ...), quote_n (1, ...), ...'.
2000-05-20add format args to match new %lu directivesJim Meyering
2000-05-20tweak warning diagnosticJim Meyering
2000-05-20Save device number as well as inode number for each directory.Jim Meyering
(struct active_dir_ent) [st_dev]: New member. [st_ino]: Rename from `inum'. (make_active_dir_ent) [device]: New parameter. (hash_compare_active_dir_ents): Compare using SAME_INODE macro. (fspec_init_common): New function, factored out. (fspec_init_file): Initialize have_device member. (fspec_get_full_mode): Remove parameter. Update caller. Set have_device and st_dev members.
2000-05-18(rm): Combine adjacent fputc and fprintf.Jim Meyering
2000-05-18remove some parens from some cpp linesJim Meyering
2000-05-18(remove_dir): Detect (and fail upon) attempt to subvert a running `rm -r'.Jim Meyering
Reported by Morten Welinder.
1999-11-12(print_nth_dir): Write one fewer byte so we don't print a trailing slash.Jim Meyering
(rm): Fix bugs in (and test, this time) the very-rarely-used code to warn about directory cycles.
1999-05-13(pop_dir): Cast length to `int' to avoid a warning onJim Meyering
64-bit systems. From Ulrich Drepper.
1999-03-31Don't include closeout.h or version-etc.h explicitly. Now, they're included ↵Jim Meyering
via sys2.h.
1999-03-18(remove_cwd_entries): Reflect changes in hash_insert.Jim Meyering
(remove_init): Call hash_initialize with one more argument.
1999-02-16update copyright datesJim Meyering
1999-01-16Don't declare base_name.Jim Meyering
1998-11-30(DOT_OR_DOTDOT): Move definition from this file...Jim Meyering
1998-11-08[HAVE_LSTAT_EMPTY_STRING_BUG]: Define lstat to rpl_lstat and declare the latter.Jim Meyering
1998-10-25(remove_cwd_entries): Don't apply CLOSEDIR to a NULLJim Meyering
pointer. (provoke with `mkdir -m 0100 x; rm -rf x') Upon CLOSEDIR failure, set `status' to RM_ERROR, not RM_OK. (remove_dir): Return `status', rather than always RM_OK.
1998-09-12(remove_cwd_entries): Declare to be static.Jim Meyering
1998-07-25(same_file): New functionJim Meyering
(remove_dir): Use it to give a better diagnostic when rmdir fails because it can't remove the current directory.
1998-07-04(remove_dir): Use fprintf, not error to avoid newline in prompt.Jim Meyering
1998-06-29revert back to using lower case _unlocked wrapper namesJim Meyering
1998-06-29Change all uses of unlocked-wrapped functions to their upper case wrapper names.Jim Meyering
1998-06-27(remove_file): Remove `non-directory' part ofJim Meyering
`removing non-directory FILE' verbose message.
1998-05-16(hash_compare_strings): Return true or false, not 1/0.Jim Meyering
(remove_cwd_entries): Use RM_OK, not equivalent literal `1'.
1998-04-26(print_nth_dir): Remove first (and always-true) part of conjunct in assertion.Jim Meyering
1998-04-14Use STREQ in string equality tests, not strcmp.Jim Meyering
1998-04-06Change names/usage of hash-related functions to work with the above.Jim Meyering
1998-03-28Add copyright.Jim Meyering
[_AIX]: Add #pragma alloca.
1998-03-13Use `virtual memory exhausted' message, notJim Meyering
`Memory exhausted' to be consistent with the majority of other such messages. Say `removing all...', not `removing any...'.
1998-01-22New file. Contains guts of old rm.c.Jim Meyering
(remove_init): New function. (remove_fini): New function.