Die if we overflowed the args[] array when building up the remote
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index 1937c7c..aa22cfe 100644 (file)
--- a/rsync.h
+++ b/rsync.h
@@ -425,23 +425,20 @@ struct file_struct {
        char *basedir;
        uid_t uid;
        gid_t gid;
-       uchar flags;
+       uchar flags;    /* this item MUST remain last */
 };
 
-#define ARENA_SIZE     (32 * 1024)
-
-struct string_area {
-       char *base;
-       char *end;
-       char *current;
-       struct string_area *next;
-};
+/*
+ * Start the flist array at FLIST_START entries and grow it
+ * by doubling until FLIST_LINEAR then grow by FLIST_LINEAR
+ */
+#define FLIST_START    (32 * 1024)
+#define FLIST_LINEAR   (FLIST_START * 512)
 
 struct file_list {
        int count;
        int malloced;
        struct file_struct **files;
-       struct string_area *string_area;
 };
 
 struct sum_buf {
@@ -712,6 +709,17 @@ size_t strlcat(char *d, const char *s, size_t bufsize);
 
 #define exit_cleanup(code) _exit_cleanup(code, __FILE__, __LINE__)
 
+#ifdef HAVE_GETEUID
+#define MY_UID() geteuid()
+#else
+#define MY_UID() getuid()
+#endif
+
+#ifdef HAVE_GETEGID
+#define MY_GID() getegid()
+#else
+#define MY_GID() getgid()
+#endif
 
 extern int verbose;