Discussion:
[PATCH] Segmentation fault when hftp used
Jiri Skala
2010-07-01 15:03:28 UTC
Permalink
Hi,
I've got bug `segmentation fault` incl. backtrace. I was not able to
reproduce it bug the backtrace pointed to crash in sprintf() (see patch
below). I suggest value of entity_date corruption.

The patch below fixes the issue (verified by bug reporter). Oh, now I
see "entity_date!=NO_DATE &&" could be omitted.


--- lftp-4.0.9/src/Http.cc.date_fmt 2009-07-17 14:52:26.000000000
+0200
+++ lftp-4.0.9/src/Http.cc 2010-06-30 08:07:00.818994525 +0200
@@ -29,6 +29,7 @@
#include <errno.h>
#include <stdarg.h>
#include <time.h>
+#include <limits.h>
#include <fnmatch.h>
#include <locale.h>
#include "Http.h"
@@ -562,16 +563,10 @@ void Http::SendRequest(const char *conne
(long long)((limit==FILE_END || limit>entity_size ?
entity_size : limit)-1),
(long long)entity_size);
}
- if(entity_date!=NO_DATE)
+ if(entity_date!=NO_DATE && entity_date>0L && entity_date<INT_MAX)
{
char d[256];
- static const char weekday_names[][4]={
- "Sun","Mon","Tue","Wed","Thu","Fri","Sat"
- };
- struct tm *t=gmtime(&entity_date);
- sprintf(d,"%s, %2d %s %04d %02d:%02d:%02d GMT",
- weekday_names[t->tm_wday],t->tm_mday,month_names[t->tm_mon],
- t->tm_year+1900,t->tm_hour,t->tm_min,t->tm_sec);
+ strftime(d, sizeof(d), "%a, %d %b %H:%M:%S %Y GMT",
gmtime(&entity_date));
Send("Last-Modified: %s\r\n",d);
}
break;
Alexander V. Lukyanov
2010-08-06 07:54:11 UTC
Permalink
Post by Jiri Skala
I've got bug `segmentation fault` incl. backtrace. I was not able to
reproduce it bug the backtrace pointed to crash in sprintf() (see patch
below). I suggest value of entity_date corruption.
The patch below fixes the issue (verified by bug reporter). Oh, now I
see "entity_date!=NO_DATE &&" could be omitted.
This patch is not quite correct, as it makes lftp send localized timestamp.
The timestamp should not be localized (i.e. month name must be in english).
--
Alexander.
Loading...