XXXXXXXX@XXXXXXXX wrote:
radvd-1.0-2vl5のlog.cにおいて、
特定の条件下でva_listを複数回使用することがあり、
segfaultを引き起こします。
upstreamは未確認、以下修正例
--- rpm/BUILD/radvd-1.0/log.c 2006-10-09 15:15:32.000000000 +0900
+++ log.c 2009-04-18 11:08:40.000000000 +0900
@@ -72,15 +72,15 @@
struct tm *tm;
time_t current;
+ vsnprintf(buff, sizeof(buff), format, ap );
+
switch (log_method) {
case L_NONE:
break;
case L_SYSLOG:
- vsnprintf(buff, sizeof(buff), format, ap);
syslog(prio, "%s", buff);
break;
case L_STDERR_SYSLOG:
- vsnprintf(buff, sizeof(buff), format, ap);
syslog(prio, "%s", buff);
if (prio > LOG_ERR) /* fall through for messages with high priority */
break;
@@ -89,9 +89,7 @@
tm = localtime(¤t);
(void) strftime(tstamp, sizeof(tstamp), LOG_TIME_FORMAT, tm);
- fprintf(stderr, "[%s] %s: ", tstamp, log_ident);
- vfprintf(stderr, format, ap);
- fputs("\n", stderr);
+ fprintf(stderr, "[%s] %s: %s\n", tstamp, log_ident, buff);
fflush(stderr);
break;
case L_LOGFILE:
@@ -99,9 +97,7 @@
tm = localtime(¤t);
(void) strftime(tstamp, sizeof(tstamp), LOG_TIME_FORMAT, tm);
- fprintf(log_file_fd, "[%s] %s: ", tstamp, log_ident);
- vfprintf(log_file_fd, format, ap);
- fputs("\n", log_file_fd);
+ fprintf(log_file_fd, "[%s] %s: %s\n", tstamp, log_ident, buff);
fflush(log_file_fd);
break;
default:
== このレポートの詳細は以下の通りです ==
レポート ID : 686
レポート URL : http://bts.vinelinux.org/guest.cgi?project=VineLinux&action=view_report&id=686
分類 : バグ
Vine ver. : Seed
関連パッケージ : radvd-1.0-2vl5
arch : x86, x86_64
状態 : 新規
優先度 : 中
重大度 : 普通
担当者 : 未定
# あなたが、このようなメッセージに無関係である場合には、
# 管理者 <Vine@xxxxxxxxxxxxx> までご連絡ください。
--
Bug Tracking System 影舞 0.8.6.
http://www.daifukuya.com/kagemai/