diff --git a/ChangeLog b/ChangeLog index ce4786a3c..72336fe10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-01-26 Richard Frith-Macdonald + + * Source/GSFTPURLHandle.m: change memcpy to memmove to avoid possible + problems with overlapping source and destination areas. + 2018-02-01 Fred Kiefer * Source/GSFormat.m: Call va_end with the correct parameter. diff --git a/Source/GSFTPURLHandle.m b/Source/GSFTPURLHandle.m index f374ab9ac..f91d0210a 100644 --- a/Source/GSFTPURLHandle.m +++ b/Source/GSFTPURLHandle.m @@ -321,7 +321,7 @@ NSString * const GSTelnetTextKey = @"GSTelnetTextKey"; len -= 3; if (len - i > 0) { - memcpy(ptr, &ptr[3], len - i); + memmove(ptr, &ptr[3], len - i); } i--; // Try again. } @@ -336,7 +336,7 @@ NSString * const GSTelnetTextKey = @"GSTelnetTextKey"; len--; if (len - i > 0) { - memcpy(ptr, &ptr[1], len - i); + memmove(ptr, &ptr[1], len - i); } } else @@ -348,7 +348,7 @@ NSString * const GSTelnetTextKey = @"GSTelnetTextKey"; len -= 2; if (len - i > 0) { - memcpy(ptr, &ptr[2], len - i); + memmove(ptr, &ptr[2], len - i); } i--; // Try again from here. } @@ -418,7 +418,7 @@ NSString * const GSTelnetTextKey = @"GSTelnetTextKey"; pos -= s; if (len > 0) { - memcpy(ptr, &ptr[s], len); + memmove(ptr, &ptr[s], len); } } [ibuf setLength: len];