Debian Bug#308296: mc segfaults on charset encoding change

----- Forwarded message from Alexander Vodomerov <alex sectorb msk ru> -----

Date: Mon, 09 May 2005 12:09:26 +0400
From: Alexander Vodomerov <alex sectorb msk ru>
To: Debian Bug Tracking System <submit bugs debian org>
Subject: Bug#308296: mc segfaults on charset encoding change
Reply-To: Alexander Vodomerov <alex sectorb msk ru>, 308296 bugs debian org
Resent-From: Alexander Vodomerov <alex sectorb msk ru>
Resent-To: debian-bugs-dist lists debian org
Resent-Cc: Stefano Melchior <stefano melchior openlabs it>
Resent-Date: Mon, 09 May 2005 08:18:11 UTC
Resent-Message-ID: <handler 308296 B 111562617811966 bugs debian org>
X-Debian-PR-Message: report 308296
X-Debian-PR-Package: mc
X-Debian-PR-Keywords: patch
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02 
        (1.212-2003-09-23-exp) on
X-Spam-Status: No, hits=-8.0 required=4.0 tests=BAYES_00,HAS_PACKAGE 
        autolearn=no version=2.60-bugs.debian.org_2005_01_02
Resent-Sender: Debian BTS <debbugs bugs debian org>

Package: mc
Version: 1:4.6.0-4.6.1-pre3-2
Severity: normal
Tags: patch

Thank you for enabling charset encoding, it's great!
However, small bug causes invalid iconv(3) usage and causes mc segfault
inside glibc. It is a result of wrong iconv outbuf parameter: it points
to buffer, but it should really point to pointer to buffer (char **
instead of char*).

The attached patch fixes the problem (at least for me).

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux
Locale: LANG=ru_RU.KOI8-R, LC_CTYPE=ru_RU.KOI8-R (charmap=KOI8-R)

Versions of packages mc depends on:
ii  libc6                       2.3.2.ds1-21 GNU C Library: Shared libraries an
ii  libglib2.0-0                2.6.4-1      The GLib library of C routines
ii  libgpmg1                    1.19.6-20    General Purpose Mouse - shared lib

-- no debconf information

--- mc-4.6.0-4.6.1-pre3/src/charsets.c.orig     2005-05-09 12:07:42.000000000 +0400
+++ mc-4.6.0-4.6.1-pre3/src/charsets.c  2005-05-09 12:07:30.000000000 +0400
@@ -143,13 +143,15 @@
 translate_character (iconv_t cd, char c)
     char obuf[4];
+    char *obufptr;
     size_t ibuflen, obuflen, count;
     ICONV_CONST char *ibuf = &c;
     ibuflen = 1;
     obuflen = sizeof(obuf);
-    count = iconv (cd, &ibuf, &ibuflen, (char **)&obuf, &obuflen);
+    obufptr = obuf;
+    count = iconv (cd, &ibuf, &ibuflen, (char **)&obufptr, &obuflen);
     if (count != (size_t)(-1) && ibuflen == 0)
        return obuf[0];

----- End forwarded message -----

Attachment: signature.asc
Description: Digital signature

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]