diff --git a/progressmeter.c b/progressmeter.c index 319b747..b54738c 100644 --- a/progressmeter.c +++ b/progressmeter.c @@ -66,7 +66,8 @@ static void update_progress_meter(int); static time_t start; /* start progress */ static time_t last_update; /* last progress update */ -static const char *file; /* name of the file being transferred */ +static char *file; /* name of the file being transferred */ +static size_t file_len = 0; /* allocated length of file */ static off_t start_pos; /* initial position of transfer */ static off_t end_pos; /* ending position of transfer */ static off_t cur_pos; /* transfer position as of last refresh */ @@ -250,7 +251,11 @@ update_progress_meter(int ignore) start_progress_meter(const char *f, off_t filesize, off_t *ctr) { start = last_update = monotime(); - file = f; + if (strlen(f) > file_len) { + file_len = strlen(f); + file = realloc(file, file_len * 4 + 1); + } + sanitize_utf8(file, f, file_len); start_pos = *ctr; end_pos = filesize; cur_pos = 0; diff --git a/Makefile.in b/Makefile.in index ac45b05..6978081 100644 --- a/Makefile.in +++ b/Makefile.in @@ -173,8 +173,8 @@ ssh$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHOBJS) sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS) $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS) -scp$(EXEEXT): $(LIBCOMPAT) libssh.a scp.o progressmeter.o - $(LD) -o $@ scp.o progressmeter.o bufaux.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) +scp$(EXEEXT): $(LIBCOMPAT) libssh.a scp.o progressmeter.o utf8_stringprep.o + $(LD) -o $@ scp.o progressmeter.o bufaux.o utf8_stringprep.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-add.o $(LD) -o $@ ssh-add.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)