epoch-in-seconds value and converts it to a string.
Use that routine in the RADIUS dissector, rather than using "ctime()"
and "tzname[]" - "tzname[]" strings might contain non-ASCII characters,
which currently give the GTK+ 1.3[.x] used on Windows, and also, I
think, GTK+ 2.x, heartburn, as they expect UTF-8, not, for example, ISO
8859/1.
Fix the string length in "abs_time_to_str()".
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@7124
f5534014-38df-0310-8fa8-
9805f1628bb7
/* to_str.c
* Routines for utilities to convert various other types to strings.
*
- * $Id: to_str.c,v 1.23 2003/01/21 05:04:07 guy Exp $
+ * $Id: to_str.c,v 1.24 2003/02/11 19:42:38 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
{
struct tm *tmp;
static gchar *cur;
- static char str[3][3+1+2+2+4+1+2+1+2+1+2+1+6+1 + 5 /* extra */];
+ static char str[3][3+1+2+2+4+1+2+1+2+1+2+1+9+1];
if (cur == &str[0][0]) {
cur = &str[1][0];
tmp = localtime(&abs_time->secs);
if (tmp) {
- sprintf(cur, "%s %2d, %d %02d:%02d:%02d.%09ld",
- mon_names[tmp->tm_mon],
- tmp->tm_mday,
- tmp->tm_year + 1900,
- tmp->tm_hour,
- tmp->tm_min,
- tmp->tm_sec,
- (long)abs_time->nsecs);
+ sprintf(cur, "%s %2d, %d %02d:%02d:%02d.%09ld",
+ mon_names[tmp->tm_mon],
+ tmp->tm_mday,
+ tmp->tm_year + 1900,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec,
+ (long)abs_time->nsecs);
+ } else
+ strncpy(cur, "Not representable", sizeof(str[0]));
+ return cur;
+}
+
+gchar *
+abs_time_secs_to_str(guint32 abs_time)
+{
+ struct tm *tmp;
+ static gchar *cur;
+ static char str[3][3+1+2+2+4+1+2+1+2+1+2+1];
+
+ if (cur == &str[0][0]) {
+ cur = &str[1][0];
+ } else if (cur == &str[1][0]) {
+ cur = &str[2][0];
} else {
- strncpy(cur, "Not representable", sizeof(str[0]));
+ cur = &str[0][0];
}
+
+ tmp = localtime(&abs_time);
+ if (tmp) {
+ sprintf(cur, "%s %2d, %d %02d:%02d:%02d",
+ mon_names[tmp->tm_mon],
+ tmp->tm_mday,
+ tmp->tm_year + 1900,
+ tmp->tm_hour,
+ tmp->tm_min,
+ tmp->tm_sec);
+ } else
+ strncpy(cur, "Not representable", sizeof(str[0]));
return cur;
}
/* to_str.h
* Definitions for utilities to convert various other types to strings.
*
- * $Id: to_str.h,v 1.12 2002/12/09 21:34:58 guy Exp $
+ * $Id: to_str.h,v 1.13 2003/02/11 19:42:38 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
extern gchar* time_secs_to_str(guint32);
extern gchar* time_msecs_to_str(guint32);
extern gchar* abs_time_to_str(nstime_t*);
+extern gchar* abs_time_secs_to_str(guint32);
extern void display_signed_time(gchar *, int, gint32, gint32, time_res_t);
extern gchar* rel_time_to_str(nstime_t*);
extern gchar* rel_time_to_secs_str(nstime_t*);
*
* RFC 2865, RFC 2866, RFC 2867, RFC 2868, RFC 2869
*
- * $Id: packet-radius.c,v 1.73 2003/01/28 16:31:03 guy Exp $
+ * $Id: packet-radius.c,v 1.74 2003/02/11 19:42:36 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
guint32 intval;
const guint8 *pd;
guint8 tag;
- char *rtimestamp;
- extern char *tzname[2];
int vsa_length;
int vsa_len;
case( RADIUS_TIMESTAMP ):
intval=tvb_get_ntohl(tvb,offset+2);
- rtimestamp=ctime((time_t*)&intval);
- rtimestamp[strlen(rtimestamp)-1]=0;
- sprintf(cont,"%d (%s %s)", tvb_get_ntohl(tvb,offset+2), rtimestamp, *tzname);
+ sprintf(cont,"%d (%s)", intval, abs_time_secs_to_str(intval));
break;
case( RADIUS_INTEGER4_TAGGED ):
intval = tvb_get_ntohl(tvb,offset+2);