diff options
author | Alex Kiernan <alex.kiernan@gmail.com> | 2019-06-13 07:07:45 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-06-14 22:48:22 +0100 |
commit | 07526deab6f347ffffb7a72c23b0fa0794335cbb (patch) | |
tree | 9049f811e02c260530414a92d6df9a573dbbc77d /meta | |
parent | 53099ced25bd86cfb45c42ad50a42e220b65fb6b (diff) | |
download | poky-07526deab6f347ffffb7a72c23b0fa0794335cbb.tar.gz |
systemd: Backport OpenSSL BUF_MEM fix
Building `systemd-resolve` from systemd 242 with OpenSSL 1.1.1c and enabling
DNS over TLS ends up calling abort (on 32 bit armhf):
Program terminated with signal SIGABRT, Aborted.
#0 __libc_do_syscall () at libc-do-syscall.S:49
49 libc-do-syscall.S: No such file or directory.
(gdb) where
#0 __libc_do_syscall () at libc-do-syscall.S:49
#1 0xb6940ea4 in __libc_signal_restore_set (set=0xbec68b78) at ../sysdeps/unix/sysv/linux/internal-signals.h:84
#2 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:48
#3 0xb69336e0 in __GI_abort () at abort.c:79
#4 0xb6968428 in __libc_message (action=action@entry=do_abort, fmt=<optimized out>) at ../sysdeps/posix/libc_fatal.c:181
#5 0xb696c7e6 in malloc_printerr (str=<optimized out>) at malloc.c:5352
#6 0xb696ca1a in munmap_chunk (p=<optimized out>) at malloc.c:2840
#7 0xb6bd1c4a in CRYPTO_clear_realloc (str=0xd0e59a, old_len=388, num=<optimized out>, file=0xb6c300dc "../../../../../../workspace/sources/openssl/crypto/buffer/buffer.c", line=135)
at ../../../../../../workspace/sources/openssl/crypto/mem.c:290
#8 0xb6b5da3a in BUF_MEM_grow_clean (str=0xcfb960, len=len@entry=393) at ../../../../../../workspace/sources/openssl/crypto/buffer/buffer.c:135
#9 0xb6b486a0 in mem_write (b=0xcf8300, in=0xd07c6b "\027\003\003", inl=24) at ../../../../../../workspace/sources/openssl/crypto/bio/bss_mem.c:235
#10 0xb6b45c86 in bwrite_conv (bio=<optimized out>, data=<optimized out>, datal=<optimized out>, written=0xbec68ec8) at ../../../../../../workspace/sources/openssl/crypto/bio/bio_meth.c:77
#11 0xb6b452d4 in bio_write_intern (written=0xbec68ec8, dlen=24, data=0xd07c6b, b=0xcf8300) at ../../../../../../workspace/sources/openssl/crypto/bio/bio_lib.c:343
#12 bio_write_intern (b=0xcf8300, data=0xd07c6b, dlen=24, written=0xbec68ec8) at ../../../../../../workspace/sources/openssl/crypto/bio/bio_lib.c:320
#13 0xb6b455b2 in BIO_write (b=<optimized out>, data=<optimized out>, dlen=<optimized out>) at ../../../../../../workspace/sources/openssl/crypto/bio/bio_lib.c:363
#14 0xb6cabd1a in ssl3_write_pending (s=s@entry=0xcfd2d8, type=type@entry=23, buf=buf@entry=0xcfcc28 "", len=len@entry=2, written=written@entry=0xbec698b0) at ../../../../../../workspace/sources/openssl/ssl/record/rec_layer_s3.c:1146
#15 0xb6cac72e in do_ssl3_write (s=s@entry=0xcfd2d8, type=type@entry=23, buf=buf@entry=0xcfcc28 "", pipelens=pipelens@entry=0xbec698b4, numpipes=numpipes@entry=1, create_empty_fragment=create_empty_fragment@entry=0,
written=written@entry=0xbec698b0) at ../../../../../../workspace/sources/openssl/ssl/record/rec_layer_s3.c:1107
#16 0xb6cac92e in ssl3_write_bytes (s=0xcfd2d8, type=23, buf_=0xcfcc28, len=<optimized out>, written=0xbec699c0) at ../../../../../../workspace/sources/openssl/ssl/record/rec_layer_s3.c:613
#17 0xb6cb1698 in ssl3_write (s=<optimized out>, buf=0xcfcc28, len=2, written=0xbec699c0) at ../../../../../../workspace/sources/openssl/ssl/s3_lib.c:4460
#18 0xb6cb87b2 in ssl_write_internal (s=<optimized out>, buf=buf@entry=0xcfcc28, num=num@entry=2, written=written@entry=0xbec699c0) at ../../../../../../workspace/sources/openssl/ssl/ssl_lib.c:1943
#19 0xb6cb8896 in SSL_write (s=<optimized out>, buf=buf@entry=0xcfcc28, num=num@entry=2) at ../../../../../../workspace/sources/openssl/ssl/ssl_lib.c:1957
#20 0x004ddac8 in dnstls_stream_write (stream=stream@entry=0xcfca60, buf=0xcfcc28 "", count=2) at ../git/src/resolve/resolved-dnstls-openssl.c:270
#21 0x004d8d5c in dns_stream_writev (s=s@entry=0xcfca60, iov=iov@entry=0xbec69b4c, iovcnt=iovcnt@entry=2, flags=flags@entry=0) at ../git/src/resolve/resolved-dns-stream.c:225
#22 0x004d9516 in on_stream_io (es=<optimized out>, fd=<optimized out>, revents=4, userdata=0xcfca60) at ../git/src/resolve/resolved-dns-stream.c:334
#23 0xb6e7f020 in source_dispatch (s=0xcf3658) at ../git/src/libsystemd/sd-event/sd-event.c:2821
#24 0xb6e806b0 in sd_event_dispatch (e=e@entry=0xced6d0) at ../git/src/libsystemd/sd-event/sd-event.c:3234
#25 0xb6e807f6 in sd_event_run (e=0xced6d0, timeout=<optimized out>) at ../git/src/libsystemd/sd-event/sd-event.c:3291
#26 0xb6e809bc in sd_event_loop (e=0xced6d0) at ../git/src/libsystemd/sd-event/sd-event.c:3312
#27 0x004bb64c in run (argv=<optimized out>, argc=<optimized out>) at ../git/src/resolve/resolved.c:84
#28 main (argc=<optimized out>, argv=<optimized out>) at ../git/src/resolve/resolved.c:91
(From OE-Core rev: b11ddab19bc7c0ce35b95345181de8a708268472)
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-core/systemd/systemd/0001-resolved-Fix-incorrect-use-of-OpenSSL-BUF_MEM.patch | 41 | ||||
-rw-r--r-- | meta/recipes-core/systemd/systemd_242.bb | 1 |
2 files changed, 42 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/0001-resolved-Fix-incorrect-use-of-OpenSSL-BUF_MEM.patch b/meta/recipes-core/systemd/systemd/0001-resolved-Fix-incorrect-use-of-OpenSSL-BUF_MEM.patch new file mode 100644 index 0000000000..f0ae1db60d --- /dev/null +++ b/meta/recipes-core/systemd/systemd/0001-resolved-Fix-incorrect-use-of-OpenSSL-BUF_MEM.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 18bddeaaf225d5becfc10cd2c6a1d037c90574a2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tomas Mraz <tmraz@fedoraproject.org> | ||
3 | Date: Tue, 11 Jun 2019 15:10:21 +0200 | ||
4 | Subject: [PATCH] resolved: Fix incorrect use of OpenSSL BUF_MEM | ||
5 | |||
6 | Fixes: #12763 | ||
7 | Upstream-Status: Backport [Not yet released] | ||
8 | https://github.com/systemd/systemd/commit/18bddeaaf225d5becfc10cd2c6a1d037c90574a2 | ||
9 | Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> | ||
10 | --- | ||
11 | src/resolve/resolved-dnstls-openssl.c | 5 ++++- | ||
12 | 1 file changed, 4 insertions(+), 1 deletion(-) | ||
13 | |||
14 | diff --git a/src/resolve/resolved-dnstls-openssl.c b/src/resolve/resolved-dnstls-openssl.c | ||
15 | index f269e4d6487f..5d9223007581 100644 | ||
16 | --- a/src/resolve/resolved-dnstls-openssl.c | ||
17 | +++ b/src/resolve/resolved-dnstls-openssl.c | ||
18 | @@ -6,6 +6,7 @@ | ||
19 | |||
20 | #include <openssl/bio.h> | ||
21 | #include <openssl/err.h> | ||
22 | +#include <string.h> | ||
23 | |||
24 | #include "io-util.h" | ||
25 | #include "resolved-dns-stream.h" | ||
26 | @@ -34,9 +35,11 @@ static int dnstls_flush_write_buffer(DnsStream *stream) { | ||
27 | return ss; | ||
28 | } else { | ||
29 | stream->dnstls_data.write_buffer->length -= ss; | ||
30 | - stream->dnstls_data.write_buffer->data += ss; | ||
31 | |||
32 | if (stream->dnstls_data.write_buffer->length > 0) { | ||
33 | + memmove(stream->dnstls_data.write_buffer->data, | ||
34 | + stream->dnstls_data.write_buffer->data + ss, | ||
35 | + stream->dnstls_data.write_buffer->length); | ||
36 | stream->dnstls_events |= EPOLLOUT; | ||
37 | return -EAGAIN; | ||
38 | } | ||
39 | -- | ||
40 | 2.17.1 | ||
41 | |||
diff --git a/meta/recipes-core/systemd/systemd_242.bb b/meta/recipes-core/systemd/systemd_242.bb index 90f235be3d..29f64b995a 100644 --- a/meta/recipes-core/systemd/systemd_242.bb +++ b/meta/recipes-core/systemd/systemd_242.bb | |||
@@ -24,6 +24,7 @@ SRC_URI += "file://touchscreen.rules \ | |||
24 | file://0005-rules-watch-metadata-changes-in-ide-devices.patch \ | 24 | file://0005-rules-watch-metadata-changes-in-ide-devices.patch \ |
25 | file://0006-network-remove-redunant-link-name-in-message.patch \ | 25 | file://0006-network-remove-redunant-link-name-in-message.patch \ |
26 | file://99-default.preset \ | 26 | file://99-default.preset \ |
27 | file://0001-resolved-Fix-incorrect-use-of-OpenSSL-BUF_MEM.patch \ | ||
27 | " | 28 | " |
28 | 29 | ||
29 | # patches needed by musl | 30 | # patches needed by musl |