Debian Bug report logs - #561113
smartmontools: smartd: double free or corruption (top): 0x0808fa68

version graph

Package: smartmontools; Maintainer for smartmontools is Giuseppe Iuculano <iuculano@debian.org>; Source for smartmontools is src:smartmontools.

Reported by: Axel Beckert <abe@deuxchevaux.org>

Date: Mon, 14 Dec 2009 16:36:02 UTC

Severity: important

Tags: fixed-upstream, patch

Found in version smartmontools/5.39-1

Fixed in version smartmontools/5.39-2

Done: Giuseppe Iuculano <iuculano@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, abe@deuxchevaux.org, Giuseppe Iuculano <iuculano@debian.org>:
Bug#561113; Package smartmontools. (Mon, 14 Dec 2009 16:36:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Axel Beckert <abe@deuxchevaux.org>:
New Bug report received and forwarded. Copy sent to abe@deuxchevaux.org, Giuseppe Iuculano <iuculano@debian.org>. (Mon, 14 Dec 2009 16:36:05 GMT) Full text and rfc822 format available.

Message #5 received at submit@bugs.debian.org (full text, mbox):

From: Axel Beckert <abe@deuxchevaux.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: smartmontools: smartd: double free or corruption (top): 0x0808fa68
Date: Mon, 14 Dec 2009 17:33:42 +0100 (CET)
Package: smartmontools
Version: 5.39-1
Severity: important
User: debian-bsd@lists.debian.org
Usertags: kfreebsd

If smartd is enabled via start_smartd=yes in
/etc/default/smartmontools, it always crashes at startup on kfreebsd:

!537 Z46 ?0 L1 root@metisse:ttyp0 (-zsh) 17:30:05 [~] # /etc/init.d/smartmontools start
Starting S.M.A.R.T. daemon: smartdNo device match or lack of permissions.
No device match or lack of permissions.
*** glibc detected *** /usr/sbin/smartd: double free or corruption (top): 0x0808fa68 ***
Aborted (core dumped)
 failed!
!538 Z47 ?1 L1 root@metisse:ttyp0 (-zsh) 17:31:05 [~] # 

This happens even if I explicitly set the harddisk with
enable_smart="/dev/ad0".

-- Package-specific info:
Output of /usr/share/bug/smartmontools:

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (600, 'testing'), (110, 'experimental')
Architecture: kfreebsd-i386 (i686)

Kernel: kFreeBSD 8.0-0-686-smp
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages smartmontools depends on:
ii  debianutils                   3.2.2      Miscellaneous utilities specific t
ii  libc0.1                       2.10.2-2   GNU C Library: Shared libraries
ii  libcam0                       8.0-3      FreeBSD CAM (Common Access Method)
ii  libgcc1                       1:4.4.2-5  GCC support library
ii  libstdc++6                    4.4.2-5    The GNU Standard C++ Library v3
ii  libusb2                       8.0-3      FreeBSD userspace USB programming 
ii  lsb-base                      3.2-23     Linux Standard Base 3.2 init scrip

Versions of packages smartmontools recommends:
ii  bsd-mailx [mailx]  8.1.2-0.20090911cvs-2 simple mail user agent
ii  heirloom-mailx [ma 12.4-1.1+b1           feature-rich BSD mail(1)

Versions of packages smartmontools suggests:
pn  gsmartcontrol                 <none>     (no description available)
pn  powersaved                    <none>     (no description available)
pn  smart-notifier                <none>     (no description available)

-- no debconf information

-- debsums errors found:
Your vendor has not defined Fcntl macro O_NOATIME, used at /usr/bin/debsums line 277.




Information forwarded to debian-bugs-dist@lists.debian.org, Giuseppe Iuculano <iuculano@debian.org>:
Bug#561113; Package smartmontools. (Tue, 15 Dec 2009 14:54:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Petr Salinger <Petr.Salinger@seznam.cz>:
Extra info received and forwarded to list. Copy sent to Giuseppe Iuculano <iuculano@debian.org>. (Tue, 15 Dec 2009 14:54:05 GMT) Full text and rfc822 format available.

Message #10 received at 561113@bugs.debian.org (full text, mbox):

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: Axel Beckert <abe@deuxchevaux.org>, 561113@bugs.debian.org
Subject: smartmontools: smartd: double free or corruption
Date: Tue, 15 Dec 2009 17:53:12 +0100 (CET)
Hello.

The problem is that realloc(p,0) returns NULL, which I have not 
been expected. But it is a valid behaviour according to POSIX.
http://www.opengroup.org/onlinepubs/9699919799/functions/realloc.html

I tested previously only smartctl, which worked fine.
Axel, please, could you verify, whether patch bellow fixes it for you ?

Thanks

	Petr


--- os_freebsd.cpp
+++ os_freebsd.cpp
@@ -164,7 +164,15 @@

 #ifdef __GLIBC__
 static inline void * reallocf(void *ptr, size_t size) {
-   void *rv = realloc(ptr, size);
+   void *rv;
+
+   if (size == 0)
+   {
+     free(ptr);
+     return NULL;
+   }
+
+   rv = realloc(ptr, size);
    if(rv == NULL)
      free(ptr);
    return rv;





Information forwarded to debian-bugs-dist@lists.debian.org, Giuseppe Iuculano <iuculano@debian.org>:
Bug#561113; Package smartmontools. (Tue, 15 Dec 2009 15:36:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Axel Beckert <abe@deuxchevaux.org>:
Extra info received and forwarded to list. Copy sent to Giuseppe Iuculano <iuculano@debian.org>. (Tue, 15 Dec 2009 15:36:05 GMT) Full text and rfc822 format available.

Message #15 received at 561113@bugs.debian.org (full text, mbox):

From: Axel Beckert <abe@deuxchevaux.org>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: 561113@bugs.debian.org
Subject: Re: smartmontools: smartd: double free or corruption
Date: Tue, 15 Dec 2009 16:23:25 +0100
Hi Petr,

thanks for having a look into this.

On Tue, Dec 15, 2009 at 05:53:12PM +0100, Petr Salinger wrote:
> Axel, please, could you verify, whether patch bellow fixes it for you ?
>
> [...]
>
> --- os_freebsd.cpp
> +++ os_freebsd.cpp
> @@ -164,7 +164,15 @@
>
>  #ifdef __GLIBC__
>  static inline void * reallocf(void *ptr, size_t size) {
> -   void *rv = realloc(ptr, size);
> +   void *rv;
> +
> +   if (size == 0)
> +   {
> +     free(ptr);
> +     return NULL;
> +   }
> +
> +   rv = realloc(ptr, size);
>     if(rv == NULL)
>       free(ptr);
>     return rv;

Unfortunately it doesn't seem to help. I added your patch via quilt:

[...]
Applying patch 63_removable.patch
patching file smartd.conf

Applying patch 64_realloc_kfreebsd.patch
patching file os_freebsd.cpp

Now at patch 64_realloc_kfreebsd.patch
touch debian/stamp-patched
dh_testdir
[...]

But when installing (even on reinstalling the new version), it still
dumps core with "double free or corruption":

!553 Z63 ?0 L1 root@metisse:ttyp0 (-zsh) 16:12:52 [~] # dpkg -i ~abe/debian/smartmontools_5.39-1.1_kfreebsd-i386.deb 
(Reading database ... 531210 files and directories currently installed.)
Preparing to replace smartmontools 5.39-1 (using .../smartmontools_5.39-1.1_kfreebsd-i386.deb) ...
Stopping S.M.A.R.T. daemon: smartd.
Unpacking replacement smartmontools ...
Setting up smartmontools (5.39-1.1) ...
Starting S.M.A.R.T. daemon: smartdNo device match or lack of permissions.
No device match or lack of permissions.
*** glibc detected *** /usr/sbin/smartd: double free or corruption (top): 0x0808fa78 ***
Aborted (core dumped)
 failed!
invoke-rc.d: initscript smartmontools, action "start" failed.
dpkg: error processing smartmontools (--install):
 subprocess installed post-installation script returned error exit status 1
Processing triggers for man-db ...
Errors were encountered while processing:
 smartmontools
dpkg -i ~abe/debian/smartmontools_5.39-1.1_kfreebsd-i386.deb  4.99s user 1.85s system 75% cpu 9.048 total
!554 Z64 ?1 L1 root@metisse:ttyp0 (-zsh) 16:14:53 [~] # dpkg -i ~abe/debian/smartmontools_5.39-1.1_kfreebsd-i386.deb
(Reading database ... 531210 files and directories currently installed.)
Preparing to replace smartmontools 5.39-1.1 (using .../smartmontools_5.39-1.1_kfreebsd-i386.deb) ...
Stopping S.M.A.R.T. daemon: smartd.
Unpacking replacement smartmontools ...
Setting up smartmontools (5.39-1.1) ...
Starting S.M.A.R.T. daemon: smartdNo device match or lack of permissions.
No device match or lack of permissions.
*** glibc detected *** /usr/sbin/smartd: double free or corruption (top): 0x0808fa78 ***
Aborted (core dumped)
 failed!
invoke-rc.d: initscript smartmontools, action "start" failed.
dpkg: error processing smartmontools (--install):
 subprocess installed post-installation script returned error exit status 1
Processing triggers for man-db ...
Errors were encountered while processing:
 smartmontools
dpkg -i ~abe/debian/smartmontools_5.39-1.1_kfreebsd-i386.deb  4.77s user 2.04s system 79% cpu 8.596 total
!554 Z65 ?1 L1 root@metisse:ttyp0 (-zsh) 16:15:21 [~] # 

Anything else I can help? Petr: If you're on IRC. I'm XTaran in
#debian-kbsd on OFTC.

		Regards, Axel
-- 
Axel Beckert - abe@deuxchevaux.org, abe@noone.org - http://noone.org/abe/




Information stored :
Bug#561113; Package smartmontools. (Fri, 18 Dec 2009 15:27:06 GMT) Full text and rfc822 format available.

Acknowledgement sent to Petr Salinger <Petr.Salinger@seznam.cz>:
Extra info received and filed, but not forwarded. (Fri, 18 Dec 2009 15:27:06 GMT) Full text and rfc822 format available.

Message #20 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: Dan Lukes <dan@obluda.cz>, Axel Beckert <abe@deuxchevaux.org>, 561113-quiet@bugs.debian.org
Cc: Smartmontools Developers List <smartmontools-devel@lists.sourceforge.net>
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Fri, 18 Dec 2009 18:27:26 +0100 (CET)
> The same code work on FreeBSD, so the problem seems to be hidden somewhere 
> within "#ifdef __GLIBC__" code.

Not necessarily. The rest of the code (or used libraries) might have 
slightly different behaviour in corner cases.

>> The problem is that realloc(p,0) returns NULL, which I have not been 
>> expected. But it is a valid behaviour according to POSIX.
>
> The realloc may return NULL anytime when requested allocation can't be 
> satisfied. It is common behavior for all implementations I know. The good 
> code must check the return value on any platform.

You did exactly the same bug/thinko as I did originally.
The previous code have been:

static inline void * reallocf(void *ptr, size_t size) {
   void *rv = realloc(ptr, size);
    if(rv == NULL)
      free(ptr);
    return rv;

But according to POSIX, realloc(p,0) might return NULL even
in case of success. In this corner case, the previously allocated memory
is already freed by realloc() and thereof is double freed.

When proposed patch is applied, smartd works for me correctly,
but not for Axel. It definitely depends on configuration.

> At the first, the backtrace needs to be revealed.

I agree.

Petr

P.S.

Please keep 561113-quiet@bugs.debian.org in the loop as 
smartmontools-devel archive is not public :-(




Information stored :
Bug#561113; Package smartmontools. (Fri, 18 Dec 2009 17:15:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Axel Beckert <abe@deuxchevaux.org>:
Extra info received and filed, but not forwarded. (Fri, 18 Dec 2009 17:15:03 GMT) Full text and rfc822 format available.

Message #25 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Axel Beckert <abe@deuxchevaux.org>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: 561113-quiet@bugs.debian.org
Subject: Re: smartmontools: smartd: double free or corruption
Date: Fri, 18 Dec 2009 18:05:17 +0100
Hi Petr,

On Fri, Dec 18, 2009 at 07:39:05PM +0100, Petr Salinger wrote:
> No please, the gdb does not work correctly #550361.
> Run the smartd -d -d, get core dumped and
> run "gdb ./smartd ./smart.core"

Ah, sorry, wasn't clear in your last mail that it needs to be done
that way. :-)

# gdb ./smartd ./smartd.core
GNU gdb (GDB) 7.0-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-kfreebsd-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/abe/debian/smartmontools-5.39/smartd...done.
Reading symbols from /usr/lib/libcam.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libcam.so.0
Reading symbols from /usr/lib/libusb.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libusb.so.2
Reading symbols from /usr/lib/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libstdc++.so.6
Reading symbols from /lib/libm.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libm.so.1
Reading symbols from /lib/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /lib/libc.so.0.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.0.1
Reading symbols from /lib/libpthread.so.0...(no debugging symbols found)...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/libbsd.so.0...(no debugging symbols found)...done.
Loaded symbols for /lib/libbsd.so.0
Reading symbols from /lib/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/ld.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/ld.so.1
Core was generated by `smartd'.
Program terminated with signal 6, Aborted.
#0  0x28257347 in kill () from /lib/libc.so.0.1
(gdb) bt
#0  0x28257347 in kill () from /lib/libc.so.0.1
#1  0x2835f4a0 in pthread_kill () from /lib/libpthread.so.0
#2  0x2835f4e6 in raise () from /lib/libpthread.so.0
#3  0x282571e4 in raise () from /lib/libc.so.0.1
#4  0x2825a303 in abort () from /lib/libc.so.0.1
#5  0x2828bb20 in ?? () from /lib/libc.so.0.1
#6  0x2829514a in ?? () from /lib/libc.so.0.1
#7  0x28296a20 in ?? () from /lib/libc.so.0.1
#8  0x28299d0e in free () from /lib/libc.so.0.1
#9  0x280dd86e in cam_close_device () from /usr/lib/libcam.so.0
#10 0x0806c884 in os_freebsd::freebsd_smart_interface::autodetect_smart_device
    (this=0x808dfe0, name=0x808e7c0 "/dev/pass0") at os_freebsd.cpp:1820
#11 0x0806cba2 in os_freebsd::freebsd_smart_interface::scan_smart_devices (
    this=0x808dfe0, devlist=..., type=0x806e30e "", pattern=0x0)
    at os_freebsd.cpp:1600
#12 0x08054bf0 in MakeConfigEntries (conf_entries=<value optimized out>, 
    scanned_devs=<value optimized out>) at smartd.cpp:4032
#13 ReadOrMakeConfigEntries (conf_entries=<value optimized out>, 
    scanned_devs=<value optimized out>) at smartd.cpp:4104
#14 0x080554ad in main_worker (argc=3, argv=0xbfbfe578) at smartd.cpp:4322
#15 0x0805699c in main (argc=3, argv=0xbfbfe578) at smartd.cpp:4429
(gdb) 

This looks exactly like your backtrace.

So I double checked that the patch is applied:

# pwd
~abe/debian/smartmontools-5.39
# cat debian/patches/series
52_remove-pragma.diff
53_use-smartd-runner-by-default.diff
54_remove-Id-from-smartd.conf.diff
60_remove-redhatism.diff
61_cciss-doc.patch
62_lowcap.patch
63_removable.patch
64_realloc_kfreebsd.patch
# cat debian/patches/64_realloc_kfreebsd.patch
Index: smartmontools-5.39/os_freebsd.cpp
===================================================================
--- smartmontools-5.39.orig/os_freebsd.cpp      2009-12-15
16:11:29.000000000 +0100
+++ smartmontools-5.39/os_freebsd.cpp   2009-12-15 17:15:34.000000000
+0100
@@ -164,11 +164,15 @@
 
 #ifdef __GLIBC__
 static inline void * reallocf(void *ptr, size_t size) {
-   void *rv = realloc(ptr, size);
+   void *rv;
+   if (size == 0)
+     size = 1;
+
+   rv = realloc(ptr, size);
    if(rv == NULL)
      free(ptr);
    return rv;
-   }
+}
 #endif
 
 freebsd_smart_device::~freebsd_smart_device() throw()

I did a "debuild clean" and a "debuild -uc -us" again. It definitely
applied the patch above:

[...]
Applying patch 64_realloc_kfreebsd.patch
patching file os_freebsd.cpp

Now at patch 64_realloc_kfreebsd.patch
touch debian/stamp-patched
[...]

But the same again:

# ./smartd -d -d
smartd 5.39 2009-12-09 r2995 [GNU/kFreeBSD 8.0-1-686-smp i686] (local
build)
Copyright (C) 2002-9 by Bruce Allen,
http://smartmontools.sourceforge.net

Opened configuration file /etc/smartd.conf
Drive: DEVICESCAN, implied '-a' Directive on line 22 of file /etc/smartd.conf
Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices
No device match or lack of permissions.
No device match or lack of permissions.
*** glibc detected *** ./smartd: double free or corruption (top):
0x0808fa40 ***
[1]    52939 abort (core dumped)  ./smartd -d -d
# ls -alF smartd{,.core}
-rwxr-xr-x 1 abe  abe  939326 2009-12-18 17:56 smartd*
-rw------- 1 root abe 3280896 2009-12-18 17:59 smartd.core
# gdb ./smartd ./smartd.core
GNU gdb (GDB) 7.0-debian
[...]
Loaded symbols for /lib/ld.so.1
Core was generated by `smartd'.
Program terminated with signal 6, Aborted.
#0  0x28257347 in kill () from /lib/libc.so.0.1
(gdb) bt
#0  0x28257347 in kill () from /lib/libc.so.0.1
#1  0x2835f4a0 in pthread_kill () from /lib/libpthread.so.0
#2  0x2835f4e6 in raise () from /lib/libpthread.so.0
#3  0x282571e4 in raise () from /lib/libc.so.0.1
#4  0x2825a303 in abort () from /lib/libc.so.0.1
#5  0x2828bb20 in ?? () from /lib/libc.so.0.1
#6  0x2829514a in ?? () from /lib/libc.so.0.1
#7  0x28296a20 in ?? () from /lib/libc.so.0.1
#8  0x28299d0e in free () from /lib/libc.so.0.1
#9  0x280dd86e in cam_close_device () from /usr/lib/libcam.so.0
#10 0x0806c884 in os_freebsd::freebsd_smart_interface::autodetect_smart_device
    (this=0x808dfe0, name=0x808e7c0 "/dev/pass0") at
    os_freebsd.cpp:1820
#11 0x0806cba2 in os_freebsd::freebsd_smart_interface::scan_smart_devices (
    this=0x808dfe0, devlist=..., type=0x806e30e "", pattern=0x0)
    at os_freebsd.cpp:1600
#12 0x08054bf0 in MakeConfigEntries (conf_entries=<value optimized out>, 
    scanned_devs=<value optimized out>) at smartd.cpp:4032
#13 ReadOrMakeConfigEntries (conf_entries=<value optimized out>, 
    scanned_devs=<value optimized out>) at smartd.cpp:4104
#14 0x080554ad in main_worker (argc=3, argv=0xbfbfe578) at smartd.cpp:4322
#15 0x0805699c in main (argc=3, argv=0xbfbfe578) at smartd.cpp:4429
(gdb) 

Wondering why I still get this very similar backtrace, even with the
patch...

		Regards, Axel
-- 
Axel Beckert - abe@deuxchevaux.org, abe@noone.org - http://noone.org/abe/




Information stored :
Bug#561113; Package smartmontools. (Fri, 18 Dec 2009 17:18:08 GMT) Full text and rfc822 format available.

Acknowledgement sent to Petr Salinger <Petr.Salinger@seznam.cz>:
Extra info received and filed, but not forwarded. (Fri, 18 Dec 2009 17:18:08 GMT) Full text and rfc822 format available.

Message #30 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: Axel Beckert <abe@deuxchevaux.org>
Cc: 561113-quiet@bugs.debian.org
Subject: Re: smartmontools: smartd: double free or corruption
Date: Fri, 18 Dec 2009 20:19:10 +0100 (CET)
>> No please, the gdb does not work correctly #550361.
>> Run the smartd -d -d, get core dumped and
>> run "gdb ./smartd ./smart.core"
>
> Ah, sorry, wasn't clear in your last mail that it needs to be done
> that way. :-)

> Wondering why I still get this very similar backtrace, even with the
> patch...

It is not the same at all ;-)

Please add also this chunk:

--- os_freebsd.cpp~     2009-12-18 17:32:16.000000000 +0100
+++ os_freebsd.cpp      2009-12-18 18:12:30.000000000 +0100
@@ -1806,10 +1806,10 @@
           cam_close_device(cam_dev);
           if(usbdevlist(bus,vendor_id, product_id, version)){
             const char * usbtype = get_usb_dev_type_by_id(vendor_id, product_id, version);
-            if (!usbtype)
-              return false;
-            return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
+            if (usbtype)
+              return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
           }
+        return false;
         }
 #if FREEBSDVER > 800100
         // check if we have ATA device connected to CAM (ada)


It should suffice to apply manually and run make.

Petr





Information stored :
Bug#561113; Package smartmontools. (Fri, 18 Dec 2009 17:48:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Dan Lukes <dan@obluda.cz>:
Extra info received and filed, but not forwarded. (Fri, 18 Dec 2009 17:48:05 GMT) Full text and rfc822 format available.

Message #35 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Dan Lukes <dan@obluda.cz>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: Axel Beckert <abe@deuxchevaux.org>, 561113-quiet@bugs.debian.org, Smartmontools Developers List <smartmontools-devel@lists.sourceforge.net>
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Fri, 18 Dec 2009 18:03:25 +0100
Petr Salinger napsal/wrote, On 12/18/09 18:27:
> The previous code have been:
> 
> static inline void * reallocf(void *ptr, size_t size) {
>    void *rv = realloc(ptr, size);
>     if(rv == NULL)
>       free(ptr);
>     return rv;


> But according to POSIX

By the way, we are speaking about os_freebsd.cpp file. It's dedicated to 
FreeBSD's platform dependent code - not the POSIX one. On FreeBSD the 
allocation of size=0 never fail, so you know the ptr is freed. So 
FreeBSD-correct implementation is:

>    void *rv = realloc(ptr, size);
>     if(rv == NULL && ptr != NULL && size > 0)
>       free(ptr);
>     return rv;

But I know nothing about realloc() implementation or your system.

It remind me another notice - you should not modify os_freebsd.cpp for 
the purposes of other operating system, you should create another one 
os_*.cpp for it. FreeBSD follow different behavior than Linux - FreeBSD 
is kernel with system libraries and binaries, so kernel stripped from 
FreeBSD with GLIBC added is not FreeBSD.

I'm not trying to start inter-OS flame in any way - but I'm not so happy 
the os_freebsd.cpp is influenced by code related to different OS.

> When proposed patch is applied, smartd works for me correctly,
> but not for Axel. It definitely depends on configuration.

Or version of GLIBC, for example ...

> Please keep 561113-quiet@bugs.debian.org in the loop as 
> smartmontools-devel archive is not public :-(

OK, but I'm not subscriber of 561113-quiet@bugs.debian.org.

				Dan




Information stored :
Bug#561113; Package smartmontools. (Fri, 18 Dec 2009 18:48:10 GMT) Full text and rfc822 format available.

Acknowledgement sent to Alex Samorukov <samm@os2.kiev.ua>:
Extra info received and filed, but not forwarded. (Fri, 18 Dec 2009 18:48:10 GMT) Full text and rfc822 format available.

Message #40 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Alex Samorukov <samm@os2.kiev.ua>
To: Dan Lukes <dan@obluda.cz>
Cc: Petr Salinger <Petr.Salinger@seznam.cz>, Axel Beckert <abe@deuxchevaux.org>, 561113-quiet@bugs.debian.org, Smartmontools Developers List <smartmontools-devel@lists.sourceforge.net>
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Fri, 18 Dec 2009 19:28:12 +0100
Dan Lukes wrote:
> But I know nothing about realloc() implementation or your system.
>
> It remind me another notice - you should not modify os_freebsd.cpp for 
> the purposes of other operating system, you should create another one 
> os_*.cpp for it. FreeBSD follow different behavior than Linux - FreeBSD 
> is kernel with system libraries and binaries, so kernel stripped from 
> FreeBSD with GLIBC added is not FreeBSD.
>
> I'm not trying to start inter-OS flame in any way - but I'm not so happy 
> the os_freebsd.cpp is influenced by code related to different OS.
>   
Dan, i understand your position, but i don`t think that it does make a 
sense to do os_debian_kfreebsd.cpp for this. It is really much closer to 
FreeBSD then to linux because 99% of the code depends on kernel, not 
libc, and kernels are the same. I`m not using this OS (and have no idea 
who and why using it) but i don`t see any problems to support it in this 
file if it will not break real FreeBSD. I already changed this file to 
support OS_VERSION in it, so i see no problems to accept correct patches 
from FreeBSD deviants.


P.S. If someone will give me shell access then i will try to fix this. 
I`m too lazy to install this strange OS on my VirtualPC, sorry.




Information stored :
Bug#561113; Package smartmontools. (Sat, 19 Dec 2009 02:09:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Axel Beckert <abe@deuxchevaux.org>:
Extra info received and filed, but not forwarded. (Sat, 19 Dec 2009 02:09:03 GMT) Full text and rfc822 format available.

Message #45 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Axel Beckert <abe@deuxchevaux.org>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: 561113-quiet@bugs.debian.org
Subject: Re: smartmontools: smartd: double free or corruption
Date: Sat, 19 Dec 2009 03:06:14 +0100
Hi Petr,

On Fri, Dec 18, 2009 at 08:19:10PM +0100, Petr Salinger wrote:
> Please add also this chunk:
>
> --- os_freebsd.cpp~     2009-12-18 17:32:16.000000000 +0100
> +++ os_freebsd.cpp      2009-12-18 18:12:30.000000000 +0100
> @@ -1806,10 +1806,10 @@
>            cam_close_device(cam_dev);
>            if(usbdevlist(bus,vendor_id, product_id, version)){
>              const char * usbtype = get_usb_dev_type_by_id(vendor_id, product_id, version);
> -            if (!usbtype)
> -              return false;
> -            return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
> +            if (usbtype)
> +              return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
>            }
> +        return false;
>          }
>  #if FREEBSDVER > 800100
>          // check if we have ATA device connected to CAM (ada)

That's it! No more crashes! Cool. :-)

		Regards, Axel
-- 
Axel Beckert - abe@deuxchevaux.org, abe@noone.org - http://noone.org/abe/




Information stored :
Bug#561113; Package smartmontools. (Sat, 19 Dec 2009 10:12:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Petr Salinger <Petr.Salinger@seznam.cz>:
Extra info received and filed, but not forwarded. (Sat, 19 Dec 2009 10:12:07 GMT) Full text and rfc822 format available.

Message #50 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: Axel Beckert <abe@deuxchevaux.org>
Cc: 561113-quiet@bugs.debian.org
Subject: Re: smartmontools: smartd: double free or corruption
Date: Sat, 19 Dec 2009 13:14:01 +0100 (CET)
[Message part 1 (text/plain, inline)]
> That's it! No more crashes! Cool. :-)

Please do yet another test against pristine 5.39-1
using attached diff. Given it works, it should be
suitable also for upstream.

Petr
[smartmontools.diff (text/x-diff, attachment)]

Information stored :
Bug#561113; Package smartmontools. (Sun, 20 Dec 2009 00:36:06 GMT) Full text and rfc822 format available.

Acknowledgement sent to Axel Beckert <abe@deuxchevaux.org>:
Extra info received and filed, but not forwarded. (Sun, 20 Dec 2009 00:36:06 GMT) Full text and rfc822 format available.

Message #55 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Axel Beckert <abe@deuxchevaux.org>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: 561113-quiet@bugs.debian.org
Subject: Re: smartmontools: smartd: double free or corruption
Date: Sun, 20 Dec 2009 01:33:51 +0100
Hi Petr,

On Sat, Dec 19, 2009 at 01:14:01PM +0100, Petr Salinger wrote:
> Please do yet another test against pristine 5.39-1
> using attached diff. Given it works, it should be
> suitable also for upstream.

Works fine here, too.

> +          return false;  
                          ^^
quilt argues about that line:

Warning: trailing whitespace in line 1806 of os_freebsd.cpp

		Regards, Axel
-- 
Axel Beckert - abe@deuxchevaux.org, abe@noone.org - http://noone.org/abe/




Information forwarded to debian-bugs-dist@lists.debian.org, Giuseppe Iuculano <iuculano@debian.org>:
Bug#561113; Package smartmontools. (Sun, 20 Dec 2009 10:27:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Petr Salinger <Petr.Salinger@seznam.cz>:
Extra info received and forwarded to list. Copy sent to Giuseppe Iuculano <iuculano@debian.org>. (Sun, 20 Dec 2009 10:27:03 GMT) Full text and rfc822 format available.

Message #60 received at 561113@bugs.debian.org (full text, mbox):

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: Alex Samorukov <samm@os2.kiev.ua>, Dan Lukes <dan@obluda.cz>, smartmontools-devel@lists.sourceforge.net
Cc: 561113@bugs.debian.org, control@bugs.debian.org, Axel Beckert <abe@deuxchevaux.org>
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Sun, 20 Dec 2009 13:28:06 +0100 (CET)
[Message part 1 (text/plain, inline)]
tags 561113 +patch
--

> I don`t see any problems to support it in this file if it will 
> not break real FreeBSD. I already changed this file to support OS_VERSION in 
> it, so i see no problems to accept correct patches from FreeBSD deviants.

Hi,

please could you apply the attached patch.
In fact there have been two double free() ;-)

The 1st one is due to realloc(p,0) returns NULL,
the free(p) have been called twice in this case.
This affects only GNU/kFreeBSD.

The 2nd one is due to cam_close_device(cam_dev) called twice
under some condition. This affects both pristine FreeBSD and GNU/kFreeBSD.

The patch have been tested by me and Axel, see [1].

Thanks
	Petr

[1] http://bugs.debian.org//cgi-bin/bugreport.cgi?bug=561113
[smartmontools.diff (text/x-diff, ATTACHMENT)]
--- os_freebsd.cpp
+++ os_freebsd.cpp
@@ -165,7 +165,7 @@
 #ifdef __GLIBC__
 static inline void * reallocf(void *ptr, size_t size) {
    void *rv = realloc(ptr, size);
-   if(rv == NULL)
+   if((rv == NULL) && (size != 0))
      free(ptr);
    return rv;
    }
@@ -1800,10 +1800,10 @@
           cam_close_device(cam_dev);
           if(usbdevlist(bus,vendor_id, product_id, version)){
             const char * usbtype = get_usb_dev_type_by_id(vendor_id, product_id, version);
-            if (!usbtype)
-              return false;
-            return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
+            if (usbtype)
+              return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
           }
+          return false;
         }
 #if FREEBSDVER > 800100
         // check if we have ATA device connected to CAM (ada)

Added tag(s) patch. Request was from Petr Salinger <Petr.Salinger@seznam.cz> to control@bugs.debian.org. (Sun, 20 Dec 2009 10:27:04 GMT) Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Giuseppe Iuculano <iuculano@debian.org>:
Bug#561113; Package smartmontools. (Sun, 20 Dec 2009 11:42:12 GMT) Full text and rfc822 format available.

Acknowledgement sent to Dan Lukes <dan@obluda.cz>:
Extra info received and forwarded to list. Copy sent to Giuseppe Iuculano <iuculano@debian.org>. (Sun, 20 Dec 2009 11:42:12 GMT) Full text and rfc822 format available.

Message #67 received at 561113@bugs.debian.org (full text, mbox):

From: Dan Lukes <dan@obluda.cz>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: smartmontools-devel@lists.sourceforge.net, 561113@bugs.debian.org
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Sun, 20 Dec 2009 12:10:32 +0100
Petr Salinger napsal/wrote, On 12/20/09 13:28:
> please could you apply the attached patch.
> In fact there have been two double free() ;-)
>
> The 1st one is due to realloc(p,0) returns NULL,
> the free(p) have been called twice in this case.
> This affects only GNU/kFreeBSD.
>
> The 2nd one is due to cam_close_device(cam_dev) called twice
> under some condition. This affects both pristine FreeBSD and GNU/kFreeBSD.
>
> The patch have been tested by me and Axel, see [1].

The second one patch seems to be OK. Can you submit it into 
SmartmonTools TRAC system, ticket #29 ?
https://sourceforge.net/apps/trac/smartmontools/ticket/29

The first one patch seems to mis-handle the situation where 
reallocf(NonNullPtr, 0) called and inner realloc(ptr,0) failed. Then 
NonNullPtr is not freeed. It si the primary purpose of reallocf() 
function to free old pointer whenever the allocation succeeded or not so 
caller will probably doesn't care the old pointer and memory region will 
leak.

We need to know how to recognize if realloc(ptr,0) failed or not (e.g. 
ptr is freed or not) in GLIBC's world. I know nothing about GLIBC's 
implementation of memory allocator, so I can't help there.

Unless we are able to recognize those two cases it seems to be better to 
change the code to something like this:

#ifdef __GLIBC__
static inline void * reallocf(void *ptr, size_t size) {
  if (size==0)
	size++;
  void *rv = realloc(ptr, size);
  if(rv == NULL)
    free(ptr);
  return rv;
}
#endif


By the way, you should move the discussion into mentioned TRAC BUG 
ticket. As we are speaking about repair in SmartmonTools master 
repository, we are off-topic in 561113@bugs.debian.org


					Dan


P.S. Such problem doesn't occur on FreeBSD because the allocation of 
size=0 region never fail here. This implementation detail is LIBC 
specific, so it says nothing about GLIBC's implementation.




Information stored :
Bug#561113; Package smartmontools. (Sun, 20 Dec 2009 16:48:11 GMT) Full text and rfc822 format available.

Acknowledgement sent to Petr Salinger <Petr.Salinger@seznam.cz>:
Extra info received and filed, but not forwarded. (Sun, 20 Dec 2009 16:48:11 GMT) Full text and rfc822 format available.

Message #72 received at 561113-quiet@bugs.debian.org (full text, mbox):

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: smartmontools-devel@lists.sourceforge.net
Cc: 561113-quiet@bugs.debian.org
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Sun, 20 Dec 2009 19:43:46 +0100 (CET)
>> The 1st one is due to realloc(p,0) returns NULL,
>> the free(p) have been called twice in this case.
>> This affects only GNU/kFreeBSD.

> The first one patch seems to mis-handle the situation where 
> reallocf(NonNullPtr, 0) called and inner realloc(ptr,0) failed. Then 
> NonNullPtr is not freeed. It si the primary purpose of reallocf() function to 
> free old pointer whenever the allocation succeeded or not so caller will 
> probably doesn't care the old pointer and memory region will leak.
>
> We need to know how to recognize if realloc(ptr,0) failed or not (e.g. ptr is 
> freed or not) in GLIBC's world. I know nothing about GLIBC's implementation 
> of memory allocator, so I can't help there.

I know enough details of GLIBC's implementation,
suggested variant works correctly, as in GLIBC's world

 realloc(p,0)  is equal to free(p), return NULL;

But feel free to use any of the following implementation of reallocf():

static inline void * reallocf(void *ptr, size_t size) {
   void *rv;

   if (size == 0)
   {
     free(ptr);
     return malloc(0);
   }

   rv = realloc(ptr, size);
    if(rv == NULL)
      free(ptr);
    return rv;
}

-------------

static inline void * reallocf(void *ptr, size_t size) {
   void *rv;

   if (size == 0)
   {
     free(ptr);
     return NULL;
   }

   rv = realloc(ptr, size);
    if(rv == NULL)
      free(ptr);
    return rv;
}

----------------

static inline void * reallocf(void *ptr, size_t size) {
   void *rv;
   rv = realloc(ptr, size);
    if((rv == NULL) && (size != 0))
      free(ptr);
    return rv;
}

----------------

static inline void * reallocf(void *ptr, size_t size) {
   void *rv;

   if (size == 0)
     size = 1;

   rv = realloc(ptr, size);
    if(rv == NULL)
      free(ptr);
    return rv;
}


----------------

static inline void * reallocf(void *ptr, size_t size) {
   void *rv;
   rv = realloc(ptr, size ? size : 1);
    if(rv == NULL)
      free(ptr);
    return rv;
}


------------

> Unless we are able to recognize those two cases it seems to be better to 
> change the code to something like this:
>
> #ifdef __GLIBC__
> static inline void * reallocf(void *ptr, size_t size) {
>  if (size==0)
> 	size++;
>  void *rv = realloc(ptr, size);
>  if(rv == NULL)
>    free(ptr);
>  return rv;
> }
> #endif


Petr




Information forwarded to debian-bugs-dist@lists.debian.org, Giuseppe Iuculano <iuculano@debian.org>:
Bug#561113; Package smartmontools. (Mon, 21 Dec 2009 02:33:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Alex Samorukov <ml@os2.kiev.ua>:
Extra info received and forwarded to list. Copy sent to Giuseppe Iuculano <iuculano@debian.org>. (Mon, 21 Dec 2009 02:33:02 GMT) Full text and rfc822 format available.

Message #77 received at 561113@bugs.debian.org (full text, mbox):

From: Alex Samorukov <ml@os2.kiev.ua>
To: Petr Salinger <Petr.Salinger@seznam.cz>
Cc: Alex Samorukov <samm@os2.kiev.ua>, Dan Lukes <dan@obluda.cz>, smartmontools-devel@lists.sourceforge.net, Axel Beckert <abe@deuxchevaux.org>, control@bugs.debian.org, 561113@bugs.debian.org
Subject: Re: [smartmontools-devel] Debian kfreebsd bug 561113 for 5.39: smartd: double free or corruption
Date: Mon, 21 Dec 2009 02:53:57 +0100
Petr Salinger wrote:
>
> The 1st one is due to realloc(p,0) returns NULL,
> the free(p) have been called twice in this case.
> This affects only GNU/kFreeBSD.
>
> The 2nd one is due to cam_close_device(cam_dev) called twice
> under some condition. This affects both pristine FreeBSD and 
> GNU/kFreeBSD.
>
> The patch have been tested by me and Axel, see [1].
>
> Thanks
>     Petr
>
> [1] http://bugs.debian.org//cgi-bin/bugreport.cgi?bug=561113
Patch committed, thank you.




Added tag(s) fixed-upstream. Request was from Petr Salinger <Petr.Salinger@seznam.cz> to control@bugs.debian.org. (Mon, 21 Dec 2009 06:51:06 GMT) Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#561113; Package smartmontools. (Tue, 22 Dec 2009 09:03:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Giuseppe Iuculano <iuculano@debian.org>:
Extra info received and forwarded to list. (Tue, 22 Dec 2009 09:03:03 GMT) Full text and rfc822 format available.

Message #84 received at 561113@bugs.debian.org (full text, mbox):

From: Giuseppe Iuculano <iuculano@debian.org>
To: 561113@bugs.debian.org,control@bugs.debian.org,561113-submitter@bugs.debian.org
Subject: [f7f4c51] Fix for Bug#561113 committed to git
Date: Tue, 22 Dec 2009 09:00:01 +0000
tags 561113 + pending
thanks

Hello,

     The following change has been committed for this bug by
 Giuseppe Iuculano <iuculano@debian.org> on Tue, 22 Dec 2009 09:58:12 +0100.
 The fix will be in the next upload. 
=========================================================================
Fixed crash on kfreebsd.

Closes: #561113
Thanks: Petr Salinger
Thanks: Axel Beckert
=========================================================================

You can check the diff of the fix at:

    http://git.debian.org/?p=collab-maint/smartmontools.git;a=commitdiff;h=f7f4c51






Added tag(s) pending. Request was from Giuseppe Iuculano <iuculano@debian.org> to control@bugs.debian.org. (Tue, 22 Dec 2009 09:03:04 GMT) Full text and rfc822 format available.

Message sent on to Axel Beckert <abe@deuxchevaux.org>:
Bug#561113. (Tue, 22 Dec 2009 09:03:07 GMT) Full text and rfc822 format available.

Reply sent to Giuseppe Iuculano <iuculano@debian.org>:
You have taken responsibility. (Sat, 26 Dec 2009 10:36:18 GMT) Full text and rfc822 format available.

Notification sent to Axel Beckert <abe@deuxchevaux.org>:
Bug acknowledged by developer. (Sat, 26 Dec 2009 10:36:19 GMT) Full text and rfc822 format available.

Message #94 received at 561113-close@bugs.debian.org (full text, mbox):

From: Giuseppe Iuculano <iuculano@debian.org>
To: 561113-close@bugs.debian.org
Subject: Bug#561113: fixed in smartmontools 5.39-2
Date: Sat, 26 Dec 2009 10:33:15 +0000
Source: smartmontools
Source-Version: 5.39-2

We believe that the bug you reported is fixed in the latest version of
smartmontools, which is due to be installed in the Debian FTP archive:

smartmontools_5.39-2.diff.gz
  to main/s/smartmontools/smartmontools_5.39-2.diff.gz
smartmontools_5.39-2.dsc
  to main/s/smartmontools/smartmontools_5.39-2.dsc
smartmontools_5.39-2_i386.deb
  to main/s/smartmontools/smartmontools_5.39-2_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 561113@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Giuseppe Iuculano <iuculano@debian.org> (supplier of updated smartmontools package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Sat, 26 Dec 2009 11:11:58 +0100
Source: smartmontools
Binary: smartmontools
Architecture: source i386
Version: 5.39-2
Distribution: unstable
Urgency: low
Maintainer: Giuseppe Iuculano <iuculano@debian.org>
Changed-By: Giuseppe Iuculano <iuculano@debian.org>
Description: 
 smartmontools - control and monitor storage systems using S.M.A.R.T.
Closes: 561113
Changes: 
 smartmontools (5.39-2) unstable; urgency=low
 .
   * [f7f4c51] Fixed crash on kfreebsd. (Closes: #561113) - thanks to
     Petr Salinger and Axel Beckert
Checksums-Sha1: 
 a7308f2c229173ed45d78deaa4ce38bc9110f3f0 1480 smartmontools_5.39-2.dsc
 836c9ca2e7f237c053558c6b9b28b8df5e0a2ea9 35489 smartmontools_5.39-2.diff.gz
 cb38a73044c4f12252495cb8e37b565b968b1f0e 417478 smartmontools_5.39-2_i386.deb
Checksums-Sha256: 
 1856ed0b8b7ece7246ef11dc077b9bde4ff79bfa9706576877cf79555f0a00aa 1480 smartmontools_5.39-2.dsc
 7254c94beb73122f3c83ad520bfe0fe9e65bcd22c65e4529b7e84434a621c601 35489 smartmontools_5.39-2.diff.gz
 a4d16e9051dc6a692002c08c757274a2514f6c285688ce1adaec9e6ed3843a1a 417478 smartmontools_5.39-2_i386.deb
Files: 
 2a95638c70c31c4cae09ed38393e2d91 1480 utils optional smartmontools_5.39-2.dsc
 d0e73bc511f2f563259a4dd7d4366907 35489 utils optional smartmontools_5.39-2.diff.gz
 f9809d4cd40557ab1b6077a857e56c5f 417478 utils optional smartmontools_5.39-2_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAks14uoACgkQNxpp46476arc+ACfXvyxouxrsy1guOKoAgBKzvvz
3pAAn3I2BCcEC93blgjxNwMXklFeGWMU
=GRkE
-----END PGP SIGNATURE-----





Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Wed, 03 Feb 2010 07:30:31 GMT) Full text and rfc822 format available.

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed Apr 23 19:22:00 2014; Machine Name: buxtehude.debian.org

Debian Bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.