o Fix some checks on snprintf(3) to prevent miscalculations.
o This fixes a memory leak that can occur on some URL's. Pointy hat to: brian
This commit is contained in:
parent
36e0bf6e9c
commit
2b8bab2f34
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=82528
@ -670,16 +670,22 @@ progressmeter(flag)
|
|||||||
if (bytes <= 0 || elapsed <= 0.0 || cursize > filesize) {
|
if (bytes <= 0 || elapsed <= 0.0 || cursize > filesize) {
|
||||||
n = snprintf(buf + len, sizeof(buf) - len,
|
n = snprintf(buf + len, sizeof(buf) - len,
|
||||||
" --:-- ETA");
|
" --:-- ETA");
|
||||||
|
if (n > 0 && n < sizeof(buf) - len)
|
||||||
|
len += n;
|
||||||
} else if (wait.tv_sec >= STALLTIME) {
|
} else if (wait.tv_sec >= STALLTIME) {
|
||||||
n = snprintf(buf + len, sizeof(buf) - len,
|
n = snprintf(buf + len, sizeof(buf) - len,
|
||||||
" - stalled -");
|
" - stalled -");
|
||||||
|
if (n > 0 && n < sizeof(buf) - len)
|
||||||
|
len += n;
|
||||||
} else {
|
} else {
|
||||||
remaining =
|
remaining =
|
||||||
((filesize - restart_point) / (bytes / elapsed) - elapsed);
|
((filesize - restart_point) / (bytes / elapsed) - elapsed);
|
||||||
if (remaining >= 100 * SECSPERHOUR)
|
if (remaining >= 100 * SECSPERHOUR) {
|
||||||
n = snprintf(buf + len, sizeof(buf) - len,
|
n = snprintf(buf + len, sizeof(buf) - len,
|
||||||
" --:-- ETA");
|
" --:-- ETA");
|
||||||
else {
|
if (n > 0 && n < sizeof(buf) - len)
|
||||||
|
len += n;
|
||||||
|
} else {
|
||||||
i = remaining / SECSPERHOUR;
|
i = remaining / SECSPERHOUR;
|
||||||
if (i)
|
if (i)
|
||||||
n = snprintf(buf + len, sizeof(buf) - len,
|
n = snprintf(buf + len, sizeof(buf) - len,
|
||||||
@ -694,8 +700,6 @@ progressmeter(flag)
|
|||||||
"%02d:%02d ETA", i / 60, i % 60);
|
"%02d:%02d ETA", i / 60, i % 60);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (n > 0 && n < sizeof(buf) - len)
|
|
||||||
len += n;
|
|
||||||
(void)write(STDOUT_FILENO, buf, len);
|
(void)write(STDOUT_FILENO, buf, len);
|
||||||
|
|
||||||
if (flag == -1) {
|
if (flag == -1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user