Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merged in the security fixes from 2.5.7.
[rsync/rsync.git]
/
flist.c
diff --git
a/flist.c
b/flist.c
index
d417a74
..
6cdc050
100644
(file)
--- a/
flist.c
+++ b/
flist.c
@@
-57,7
+57,7
@@
extern int relative_paths;
extern int implied_dirs;
extern int copy_links;
extern int copy_unsafe_links;
extern int implied_dirs;
extern int copy_links;
extern int copy_unsafe_links;
-extern int
remote
_version;
+extern int
protocol
_version;
extern int io_error;
extern int sanitize_paths;
extern int io_error;
extern int sanitize_paths;
@@
-123,10
+123,10
@@
static struct string_area *string_area_new(int size)
if (size <= 0)
size = ARENA_SIZE;
if (size <= 0)
size = ARENA_SIZE;
- a =
malloc(sizeof(*a)
);
+ a =
new(struct string_area
);
if (!a)
out_of_memory("string_area_new");
if (!a)
out_of_memory("string_area_new");
- a->current = a->base =
malloc(
size);
+ a->current = a->base =
new_array(char,
size);
if (!a->current)
out_of_memory("string_area_new buffer");
a->end = a->base + size;
if (!a->current)
out_of_memory("string_area_new buffer");
a->end = a->base + size;
@@
-327,7
+327,6
@@
static char *flist_dir;
static void flist_expand(struct file_list *flist)
{
if (flist->count >= flist->malloced) {
static void flist_expand(struct file_list *flist)
{
if (flist->count >= flist->malloced) {
- size_t new_bytes;
void *new_ptr;
if (flist->malloced < 1000)
void *new_ptr;
if (flist->malloced < 1000)
@@
-335,16
+334,19
@@
static void flist_expand(struct file_list *flist)
else
flist->malloced *= 2;
else
flist->malloced *= 2;
- new_bytes = sizeof(flist->files[0]) * flist->malloced;
-
- if (flist->files)
- new_ptr = realloc(flist->files, new_bytes);
- else
- new_ptr = malloc(new_bytes);
+ if (flist->files) {
+ new_ptr = realloc_array(flist->files,
+ struct file_struct *,
+ flist->malloced);
+ } else {
+ new_ptr = new_array(struct file_struct *,
+ flist->malloced);
+ }
if (verbose >= 2) {
rprintf(FINFO, "expand file_list to %.0f bytes, did%s move\n",
if (verbose >= 2) {
rprintf(FINFO, "expand file_list to %.0f bytes, did%s move\n",
- (double) new_bytes,
+ (double)sizeof(flist->files[0])
+ * flist->malloced,
(new_ptr == flist->files) ? " not" : "");
}
(new_ptr == flist->files) ? " not" : "");
}
@@
-446,7
+448,7
@@
static void send_file_entry(struct file_struct *file, int f,
#if SUPPORT_HARD_LINKS
if (preserve_hard_links && S_ISREG(file->mode)) {
#if SUPPORT_HARD_LINKS
if (preserve_hard_links && S_ISREG(file->mode)) {
- if (
remote
_version < 26) {
+ if (
protocol
_version < 26) {
/* 32-bit dev_t and ino_t */
write_int(f, (int) file->dev);
write_int(f, (int) file->inode);
/* 32-bit dev_t and ino_t */
write_int(f, (int) file->dev);
write_int(f, (int) file->inode);
@@
-459,7
+461,7
@@
static void send_file_entry(struct file_struct *file, int f,
#endif
if (always_checksum) {
#endif
if (always_checksum) {
- if (
remote
_version < 21) {
+ if (
protocol
_version < 21) {
write_buf(f, file->sum, 2);
} else {
write_buf(f, file->sum, MD4_SUM_LENGTH);
write_buf(f, file->sum, 2);
} else {
write_buf(f, file->sum, MD4_SUM_LENGTH);
@@
-502,7
+504,7
@@
static void receive_file_entry(struct file_struct **fptr,
else
l2 = read_byte(f);
else
l2 = read_byte(f);
- file =
(struct file_struct *) malloc(sizeof(*file)
);
+ file =
new(struct file_struct
);
if (!file)
out_of_memory("receive_file_entry");
memset((char *) file, 0, sizeof(*file));
if (!file)
out_of_memory("receive_file_entry");
memset((char *) file, 0, sizeof(*file));
@@
-569,7
+571,7
@@
static void receive_file_entry(struct file_struct **fptr,
rprintf(FERROR, "overflow: l=%d\n", l);
overflow("receive_file_entry");
}
rprintf(FERROR, "overflow: l=%d\n", l);
overflow("receive_file_entry");
}
- file->link =
(char *) malloc(
l + 1);
+ file->link =
new_array(char,
l + 1);
if (!file->link)
out_of_memory("receive_file_entry 2");
read_sbuf(f, file->link, l);
if (!file->link)
out_of_memory("receive_file_entry 2");
read_sbuf(f, file->link, l);
@@
-579,7
+581,7
@@
static void receive_file_entry(struct file_struct **fptr,
}
#if SUPPORT_HARD_LINKS
if (preserve_hard_links && S_ISREG(file->mode)) {
}
#if SUPPORT_HARD_LINKS
if (preserve_hard_links && S_ISREG(file->mode)) {
- if (
remote
_version < 26) {
+ if (
protocol
_version < 26) {
file->dev = read_int(f);
file->inode = read_int(f);
} else {
file->dev = read_int(f);
file->inode = read_int(f);
} else {
@@
-590,10
+592,10
@@
static void receive_file_entry(struct file_struct **fptr,
#endif
if (always_checksum) {
#endif
if (always_checksum) {
- file->sum =
(char *) malloc(
MD4_SUM_LENGTH);
+ file->sum =
new_array(char,
MD4_SUM_LENGTH);
if (!file->sum)
out_of_memory("md4 sum");
if (!file->sum)
out_of_memory("md4 sum");
- if (
remote
_version < 21) {
+ if (
protocol
_version < 21) {
read_buf(f, file->sum, 2);
} else {
read_buf(f, file->sum, MD4_SUM_LENGTH);
read_buf(f, file->sum, 2);
} else {
read_buf(f, file->sum, MD4_SUM_LENGTH);
@@
-693,8
+695,8
@@
struct file_struct *make_file(char *fname, struct string_area **ap,
}
}
io_error = 1;
}
}
io_error = 1;
- rprintf(FERROR, "readlink %s: %s\n",
- f
name
, strerror(save_errno));
+ rprintf(FERROR, "readlink %s
failed
: %s\n",
+ f
ull_fname(fname)
, strerror(save_errno));
return NULL;
}
return NULL;
}
@@
-723,7
+725,7
@@
struct file_struct *make_file(char *fname, struct string_area **ap,
if (verbose > 2)
rprintf(FINFO, "make_file(%s,*,%d)\n", fname, exclude_level);
if (verbose > 2)
rprintf(FINFO, "make_file(%s,*,%d)\n", fname, exclude_level);
- file =
(struct file_struct *) malloc(sizeof(*file)
);
+ file =
new(struct file_struct
);
if (!file)
out_of_memory("make_file");
memset((char *) file, 0, sizeof(*file));
if (!file)
out_of_memory("make_file");
memset((char *) file, 0, sizeof(*file));
@@
-843,7
+845,8
@@
static void send_directory(int f, struct file_list *flist, char *dir)
d = opendir(dir);
if (!d) {
io_error = 1;
d = opendir(dir);
if (!d) {
io_error = 1;
- rprintf(FERROR, "opendir(%s): %s\n", dir, strerror(errno));
+ rprintf(FERROR, "opendir %s failed: %s\n",
+ full_fname(dir), strerror(errno));
return;
}
return;
}
@@
-852,9
+855,8
@@
static void send_directory(int f, struct file_list *flist, char *dir)
if (fname[l - 1] != '/') {
if (l == MAXPATHLEN - 1) {
io_error = 1;
if (fname[l - 1] != '/') {
if (l == MAXPATHLEN - 1) {
io_error = 1;
- rprintf(FERROR,
- "skipping long-named directory %s\n",
- fname);
+ rprintf(FERROR, "skipping long-named directory: %s\n",
+ full_fname(fname));
closedir(d);
return;
}
closedir(d);
return;
}
@@
-873,18
+875,23
@@
static void send_directory(int f, struct file_list *flist, char *dir)
io_error = 1;
rprintf(FINFO,
"cannot cvs-exclude in long-named directory %s\n",
io_error = 1;
rprintf(FINFO,
"cannot cvs-exclude in long-named directory %s\n",
- f
name
);
+ f
ull_fname(fname)
);
}
}
}
}
- for (
di = readdir(d); di;
di = readdir(d)) {
+ for (
errno = 0, di = readdir(d); di; errno = 0,
di = readdir(d)) {
char *dname = d_name(di);
char *dname = d_name(di);
- if (dname[0] == '.' && (dname[1] == '\0'
||
- (dname[1] == '.' && dname[2] == '\0')))
+ if (dname[0] == '.' && (dname[1] == '\0'
+
||
(dname[1] == '.' && dname[2] == '\0')))
continue;
strlcpy(p, dname, MAXPATHLEN - l);
send_file_name(f, flist, fname, recurse, 0);
}
continue;
strlcpy(p, dname, MAXPATHLEN - l);
send_file_name(f, flist, fname, recurse, 0);
}
+ if (errno) {
+ io_error = 1;
+ rprintf(FERROR, "readdir(%s): (%d) %s\n",
+ dir, errno, strerror(errno));
+ }
if (local_exclude_list)
free_exclude_list(&local_exclude_list); /* Zeros pointer too */
if (local_exclude_list)
free_exclude_list(&local_exclude_list); /* Zeros pointer too */
@@
-920,8
+927,8
@@
struct file_list *send_file_list(int f, int argc, char *argv[])
io_start_buffering(f);
if (filesfrom_fd >= 0) {
if (argv[0] && !push_dir(argv[0], 0)) {
io_start_buffering(f);
if (filesfrom_fd >= 0) {
if (argv[0] && !push_dir(argv[0], 0)) {
- rprintf(FERROR, "push_dir %s : %s\n",
-
argv[0]
, strerror(errno));
+ rprintf(FERROR, "push_dir %s
failed
: %s\n",
+
full_fname(argv[0])
, strerror(errno));
exit_cleanup(RERR_FILESELECT);
}
use_ff_fd = 1;
exit_cleanup(RERR_FILESELECT);
}
use_ff_fd = 1;
@@
-957,8
+964,8
@@
struct file_list *send_file_list(int f, int argc, char *argv[])
if (link_stat(fname, &st) != 0) {
if (f != -1) {
io_error = 1;
if (link_stat(fname, &st) != 0) {
if (f != -1) {
io_error = 1;
- rprintf(FERROR, "link_stat %s : %s\n",
- f
name
, strerror(errno));
+ rprintf(FERROR, "link_stat %s
failed
: %s\n",
+ f
ull_fname(fname)
, strerror(errno));
}
continue;
}
}
continue;
}
@@
-1024,8
+1031,8
@@
struct file_list *send_file_list(int f, int argc, char *argv[])
if (!olddir) {
io_error = 1;
if (!olddir) {
io_error = 1;
- rprintf(FERROR, "push_dir %s : %s\n",
-
dir
, strerror(errno));
+ rprintf(FERROR, "push_dir %s
failed
: %s\n",
+
full_fname(dir)
, strerror(errno));
continue;
}
continue;
}
@@
-1040,8
+1047,8
@@
struct file_list *send_file_list(int f, int argc, char *argv[])
if (olddir != NULL) {
flist_dir = NULL;
if (pop_dir(olddir) != 0) {
if (olddir != NULL) {
flist_dir = NULL;
if (pop_dir(olddir) != 0) {
- rprintf(FERROR, "pop_dir %s : %s\n",
-
dir
, strerror(errno));
+ rprintf(FERROR, "pop_dir %s
failed
: %s\n",
+
full_fname(dir)
, strerror(errno));
exit_cleanup(RERR_FILESELECT);
}
}
exit_cleanup(RERR_FILESELECT);
}
}
@@
-1096,15
+1103,13
@@
struct file_list *recv_file_list(int f)
start_read = stats.total_read;
start_read = stats.total_read;
- flist =
(struct file_list *) malloc(sizeof(flist[0])
);
+ flist =
new(struct file_list
);
if (!flist)
goto oom;
flist->count = 0;
flist->malloced = 1000;
if (!flist)
goto oom;
flist->count = 0;
flist->malloced = 1000;
- flist->files =
- (struct file_struct **) malloc(sizeof(flist->files[0]) *
- flist->malloced);
+ flist->files = new_array(struct file_struct *, flist->malloced);
if (!flist->files)
goto oom;
if (!flist->files)
goto oom;
@@
-1246,7
+1251,7
@@
struct file_list *flist_new(void)
{
struct file_list *flist;
{
struct file_list *flist;
- flist =
(struct file_list *) malloc(sizeof(flist[0])
);
+ flist =
new(struct file_list
);
if (!flist)
out_of_memory("send_file_list");
if (!flist)
out_of_memory("send_file_list");