Your message dated Sat, 29 Oct 2016 19:36:56 +0200
with message-id <[email protected]>
and subject line Re: Bug#837700: gnutls: GNUTLS segfaults on initialization
has caused the Debian Bug report #837700,
regarding gnutls: GNUTLS segfaults on initialization
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
837700: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837700
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: libgnutls30
Version: 3.5.4-2
Severity: grave
File: gnutls
Justification: renders package unusable

The bug is caused by GNUTLS being compiled with the headers of and old
version of Nettle, but the package depending on (or failing to account
for a breaking change to) a newer version of Nettle.

In the newer version of Nettle, in the struct "yarrow256_ctx", the type
of the "key" member has changed from "aes256_ctx" to "aes_ctx".

"aes_ctx" is like "aes256_ctx", except it has an extra integer, which
makes the whole yarrow256_ctx type one integer bigger as well.

GNUTLS contains a yarrow256_ctx in one of its structs, followed
immediately by a buffer, but it's compiled with the old yarrow256_ctx,
which is too small. Both the struct and the buffer are passed
as arguments to yarrow256_init, but in Nettle's code, yarrow256_ctx
is bigger, so the buffer is treated as being within the yarrow256_ctx
object's address space. As a result, initializing the buffer overwrites
a pointer in the yarrow256_ctx object, leading to a NULL pointer
dereference.

A quick fix to this problem is to simply edit /usr/include/nettle/yarrow.h
and add a padding integer (of type "unsigned") to its definition of
"yarrow256_ctx" right after the "key" object, and then recompiling
GNUTLS. This is good enough, since GNUTLS doesn't look at the internal
structure of yarrow256_ctx, so only the size needs to be corrected.

By doing this, I was able to get Chromium 53.0.2785.92 working, which was
previously crashing because of this problem.


-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 3.16.0-4-686-pae (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libgnutls30:i386 depends on:
ii  libc6        2.24-2
ii  libgmp10     2:6.0.0+dfsg-6
ii  libhogweed4  3.2-1
ii  libidn11     1.28-1
ii  libnettle6   3.2-1
ii  libp11-kit0  0.23.2-5
ii  libtasn1-6   4.8-1
ii  zlib1g       1:1.2.8.dfsg-1

libgnutls30:i386 recommends no packages.

Versions of packages libgnutls30:i386 suggests:
pn  gnutls-bin  <none>

-- no debconf information

--- End Message ---
--- Begin Message ---
Closing, since the submitter has stopped responding.

--- End Message ---

Reply via email to