X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/eb61be192de5bb899bedb851f69981e191ba1853..fb6e0ea120672aad1ecd2aebb8535d95be49ff8c:/util.c diff --git a/util.c b/util.c index e6420646..ddb150ad 100644 --- a/util.c +++ b/util.c @@ -197,12 +197,10 @@ static int full_write(int desc, char *ptr, size_t len) total_written = 0; while (len > 0) { - int written = write (desc, ptr, len); + int written = write(desc, ptr, len); if (written < 0) { -#ifdef EINTR if (errno == EINTR) continue; -#endif return written; } total_written += written; @@ -231,13 +229,9 @@ static int safe_read(int desc, char *ptr, size_t len) if (len == 0) return len; -#ifdef EINTR do { n_chars = read(desc, ptr, len); } while (n_chars < 0 && errno == EINTR); -#else - n_chars = read(desc, ptr, len); -#endif return n_chars; } @@ -559,13 +553,6 @@ void strlower(char *s) } } -void *Realloc(void *p, int size) -{ - if (!p) return (void *)malloc(size); - return (void *)realloc(p, size); -} - - void clean_fname(char *name) { char *p; @@ -1008,3 +995,23 @@ int _Insure_trap_error(int a1, int a2, int a3, int a4, int a5, int a6) return ret; } #endif + + +#define MALLOC_MAX 0x40000000 + +void *_new_array(unsigned int size, unsigned long num) +{ + if (num >= MALLOC_MAX/size) + return NULL; + return malloc(size * num); +} + +void *_realloc_array(void *ptr, unsigned int size, unsigned long num) +{ + if (num >= MALLOC_MAX/size) + return NULL; + /* No realloc should need this, but just in case... */ + if (!ptr) + return malloc(size * num); + return realloc(ptr, size * num); +}