Krzysztof Kowalczyk notes that 'etastr' can overflow if the times involved

start to get silly. Replace it with a dynamically allocated string instead.

[originally from svn r4153]
This commit is contained in:
Jacob Nevins 2004-04-27 18:23:48 +00:00
Родитель 28e5492cb6
Коммит 0b3f799be7
1 изменённых файлов: 5 добавлений и 3 удалений

8
scp.c
Просмотреть файл

@ -470,7 +470,7 @@ static void print_stats(char *name, unsigned long size, unsigned long done,
{ {
float ratebs; float ratebs;
unsigned long eta; unsigned long eta;
char etastr[10]; char *etastr;
int pct; int pct;
int len; int len;
int elap; int elap;
@ -486,8 +486,8 @@ static void print_stats(char *name, unsigned long size, unsigned long done,
eta = size - done; eta = size - done;
else else
eta = (unsigned long) ((size - done) / ratebs); eta = (unsigned long) ((size - done) / ratebs);
sprintf(etastr, "%02ld:%02ld:%02ld", etastr = dupprintf("%02ld:%02ld:%02ld",
eta / 3600, (eta % 3600) / 60, eta % 60); eta / 3600, (eta % 3600) / 60, eta % 60);
pct = (int) (100 * (done * 1.0 / size)); pct = (int) (100 * (done * 1.0 / size));
@ -506,6 +506,8 @@ static void print_stats(char *name, unsigned long size, unsigned long done,
fflush(stdout); fflush(stdout);
} }
free(etastr);
} }
/* /*