diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2004-07-27 23:15:05 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2004-07-27 23:15:05 +0000 |
commit | 0dd8a47056fc5f105e617e02be6708a6ff633534 (patch) | |
tree | 302929ddae796297e7f1cafab534af0cb8bf529a /lib/ChangeLog | |
parent | 94a410b48a9015867bc9de2a1b8d4e7004a1ab2e (diff) | |
download | coreutils-0dd8a47056fc5f105e617e02be6708a6ff633534.tar.xz |
backupfile integer overflow fixups
Diffstat (limited to 'lib/ChangeLog')
-rw-r--r-- | lib/ChangeLog | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog index 6efb09a1a..972a77b17 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,33 @@ +2004-07-27 Paul Eggert <eggert@cs.ucla.edu> + + backupfile.c rewrite to avoid arbitrary limits on lengths of + numeric backup extensions. + + * addext.c: Remove; no longer needed. + * Makefile.am (libfetish_a_SOURCES): Remove addext.c. + * backupfile.h (addext): Remove decl. + * backupfile.c: Include "backupfile.h" first. + Include errno.h, stdbool.h, limits.h, unistd.h, xalloc.h. + (CLOSEDIR, INT_STRLEN_BOUND): Remove. + (pathconf) [! (HAVE_PATHCONF && defined _PC_NAME_MAX)]: New macro. + (_POSIX_NAME_MAX) [!defined _POSIX_NAME_MAX]: New macro. + (NAME_MAX_MAXIMUM): New macro. Unlike the old addext.c, we + also look at _XOPEN_NAME_MAX, for better performance on modern + hosts that support only file names of length 255 or more. + (ISDIGIT): unsigned -> unsigned int + (max_backup_version, version_number): Remove. + (check_extension): New function. Similar to the old addext, but + static, assumes that the extension has already been added, + and a bit more careful on DOS hosts. + (numbered_backup): New function. It does what max_backup_version + and version_number used to do, but it doesn't use integer arithmetic + to calculate extensions so it doesn't overflow. + (find_backup_file_name): Rewrite to use these new functions. + This has a new optimization: we needn't call pathconf if the + new numbered backup name has the same length as the old. + Also, use xmalloc rather than malloc, so that the caller + needn't worry about memory exhaustion. + 2004-07-25 Paul Eggert <eggert@cs.ucla.edu> * euidaccess.c [!defined LIBC]: Included group-member.h, stat-macros.h. |