[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[webdav-jp:0988] Re: mod_encoding 付き httpd の肥大化



  吉山です。

On Tue, 27 Apr 2004 13:58:10 +0900
Kenji Wakamiya <wkenji@xxxxxxxxxxxxxx> wrote:

> 若宮と申します。
> 
> mod_encoding について少々困った症状に遭遇しております。メモリリーク
> の類かなと思いつつ、Apache API にも疎くて手に負えなかったので;)、
> ひとまずここに報告させて頂きます。mod_dav のあるなしによらないので
> オフトピ気味ですが、mod_encoding のユーザが一番多いと思われるので…。
	(中略)
> 当方では以下のサーバ環境にて再現性を確認しました。
> - Fedora Core 1   + Apache 2.0.49 + mod_encoding-20021209(+Apache2版)
> - Red Hat Linux 9 + Apache 2.0.49 + mod_encoding-20021209(+Apache2版)
> - Red Hat Linux 9 + Apache 1.3.29 + mod_encoding-20021209
> ユーザクライアントは主に WinXP の WebDAV リダイレクタですが、Perl で
> 書いたテストスクリプト (PROPFIND しまくる:) で確認しました。
> mod_encoding は技評の WebDAV 本にある手順で make し、httpd.conf には
> 以下の設定を記述しています。
> 
> EncodingEngine On
> NomalizeUsername On
> SetServerEncoding UTF-8
> DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
> AddClientEncoding "cadaver/" EUC-JP

  ちと調べてみました。
  iconv_hook のモジュールで必要なメモリ開放をしていないような気がする箇所
が2つありました。
  iconv_hook なしでコンパイルする(glibc の iconv() を利用する)ようにして
みて問題が解決するならビンゴかも知れません。

--- iconv_hook_eucjp.c  2002-06-10 22:57:52.000000000 +0900
+++ iconv_hook_eucjp.c.fix      2004-04-27 18:31:22.000000000 +0900
@@ -111,6 +111,7 @@
         if (cl < 0xA0 || cl > 0xDF) {
           *srcbuf=(char *)(src-2);
           errno=EILSEQ;
+         free(tmpbuf);
           return -1;
         }
         *tmp++ = cl;
@@ -118,6 +119,7 @@
         /* We don't support JIS X 0212 */
         *srcbuf=(char *)(src-2);
         errno=EILSEQ;
+       free(tmpbuf);
         return -1;
       }
     }
--- iconv_hook_ja_auto.c        2002-06-08 18:32:41.000000000 +0900
+++ iconv_hook_ja_auto.c.fix    2004-04-27 18:26:16.000000000 +0900
@@ -37,6 +37,9 @@
     cd->ienc = strdup(ienc);
 
     if (cd->oenc == NULL || cd->ienc == NULL){
+       if (cd->oenc == NULL) free (cd->oenc);
+       if (cd->ienc == NULL) free (id->oenc);
+       free(cd);
        return (iconv_t)(-1);
     } else {
        return (iconv_t)cd;
---
吉山あきら<yosshy@xxxxxxxxxxxx>