VineSeed ML アーカイブ



[VineSeed:17229] [VineLinux:0686] radvd の log.c でsegfault

  • From: bts-vinelinux@xxxxxxxxxxxxx
  • Subject: [VineSeed:17229] [VineLinux:0686] radvd の log.c でsegfault
  • Date: Sat, 18 Apr 2009 11:24:41 +0900
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(&current);
                        (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(&current);
                        (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/