aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES4
-rw-r--r--TODO-RELEASE2
-rw-r--r--lib/ssh.c18
-rw-r--r--tests/data/DISABLED4
4 files changed, 18 insertions, 10 deletions
diff --git a/CHANGES b/CHANGES
index af237e1b5..9a42f0a26 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
Changelog
+Daniel Fandrich (21 Oct 2008)
+- Fixed some problems with SFTP range support to fix test cases 634 through
+ 637.
+
Daniel Fandrich (17 Oct 2008)
- Fixed a compile error reported by Albert Chin on AIX and IRIX when using
GTLS.
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 36a22ed2d..282fa9979 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -15,8 +15,6 @@ Awaiting feedback, updates or removal:
182 - Make CURLINFO_LASTSOCKET accessible during perform
-187 - Failing SFTP range tests cases 634 through 637
-
Patches pending commit:
183 - "libcurl issue with IPv6 and c-ares"
diff --git a/lib/ssh.c b/lib/ssh.c
index 005eb265f..19b685f30 100644
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -1644,11 +1644,21 @@ static CURLcode ssh_statemach_act(struct connectdata *conn)
while(ptr && *ptr && (isspace((int)*ptr) || (*ptr=='-')))
ptr++;
to=curlx_strtoofft(ptr, &ptr2, 0);
- if ((ptr == ptr2) /* no "to" value given */
- || (to > size)) {
- to = size;
+ if((ptr == ptr2) /* no "to" value given */
+ || (to >= size)) {
+ to = size - 1;
}
- if (from > to) {
+ if(from < 0) {
+ /* from is relative to end of file */
+ from += size;
+ }
+ if(from >= size) {
+ failf(data, "Offset (%"
+ FORMAT_OFF_T ") was beyond file size (%" FORMAT_OFF_T ")",
+ from, attrs.filesize);
+ return CURLE_BAD_DOWNLOAD_RESUME;
+ }
+ if(from > to) {
from = to;
size = 0;
}
diff --git a/tests/data/DISABLED b/tests/data/DISABLED
index 012450fb0..2055e9f16 100644
--- a/tests/data/DISABLED
+++ b/tests/data/DISABLED
@@ -3,7 +3,3 @@
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
# Lines starting with '#' letters are treated as comments.
-634
-635
-636
-637