mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-09-09 03:39:25 -04:00
Make --max-alloc=0 safer.
Always do size checking in my_alloc(), even for `--max-alloc=0`.
This commit is contained in:
1 parent
3476caea3e
commit
2f9b963aba
3 files changed
+5
-2
No files matched your search
@@ -1946,6 +1946,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
|
||||
goto cleanup;
|
||||
max_alloc = size;
|
||||
}
|
||||
if (!max_alloc)
|
||||
max_alloc = SIZE_MAX;
|
||||
|
||||
if (old_style_args < 0) {
|
||||
if (!am_server && protect_args <= 0 && (arg = getenv("RSYNC_OLD_ARGS")) != NULL && *arg) {
|
||||
|
||||
+2
-1
@@ -2106,7 +2106,8 @@ expand it.
|
||||
See the [`--max-size`](#opt) option for a description of how SIZE can be
|
||||
specified. The default suffix if none is given is bytes.
|
||||
|
||||
Beginning in 3.2.3, a value of 0 specifies no limit.
|
||||
Beginning in 3.2.7, a value of 0 is an easy way to specify SIZE_MAX (the
|
||||
largest limit possible).
|
||||
|
||||
You can set a default value using the environment variable
|
||||
[`RSYNC_MAX_ALLOC`](#) using the same SIZE values as supported by this
|
||||
|
||||
@@ -72,7 +72,7 @@ int msleep(int t)
|
||||
|
||||
void *my_alloc(void *ptr, size_t num, size_t size, const char *file, int line)
|
||||
{
|
||||
if (max_alloc && num >= max_alloc/size) {
|
||||
if (num >= max_alloc/size) {
|
||||
if (!file)
|
||||
return NULL;
|
||||
rprintf(FERROR, "[%s] exceeded --max-alloc=%s setting (file=%s, line=%d)\n",
|
||||
|
||||
Reference in new issue
Block a user