openssl.git
6 years ago Add X509_get0_authority_key_id() function
Massimiliano Pala [Mon, 19 Feb 2018 20:47:02 +0000 (15:47 -0500)]
  Add X509_get0_authority_key_id() function

  This function makes it easier to retrieve a reference to the
  authority key identifier (akid->keyid) inside a certificate.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5271)

6 years agoThe record version for ClientHello2 should be TLS1.2
Matt Caswell [Thu, 15 Feb 2018 14:29:45 +0000 (14:29 +0000)]
The record version for ClientHello2 should be TLS1.2

According to TLSv1.3 draft-24 the record version for ClientHello2 should
be TLS1.2, and not TLS1.0 as it is now.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5377)

6 years agosha/asm/keccak1600-armv8.pl: add hardware-assisted ARMv8.2 subroutines.
Andy Polyakov [Tue, 13 Feb 2018 20:59:15 +0000 (21:59 +0100)]
sha/asm/keccak1600-armv8.pl: add hardware-assisted ARMv8.2 subroutines.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5358)

6 years agotest_ssl_old: avoid empty strings for flags
Richard Levitte [Fri, 16 Feb 2018 22:34:32 +0000 (23:34 +0100)]
test_ssl_old: avoid empty strings for flags

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5396)

6 years agoOpenSSL::Test::quotify: put quotes around empty arguments
Richard Levitte [Fri, 16 Feb 2018 22:28:31 +0000 (23:28 +0100)]
OpenSSL::Test::quotify: put quotes around empty arguments

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5396)

6 years agoAvoid mentioning uninitialised contexts.
Pauli [Fri, 16 Feb 2018 01:24:51 +0000 (11:24 +1000)]
Avoid mentioning uninitialised contexts.

All contexts must be initialised because they can only be created using the _new() calls.
Remove the outdated mentions of uninitialised and initialised contexts.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5388)

6 years agoConfigure: avoid uninit data in configdata.pm
Richard Levitte [Sat, 17 Feb 2018 06:33:17 +0000 (07:33 +0100)]
Configure: avoid uninit data in configdata.pm

Fixes #5394

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5399)

6 years agopkeyparam.pod: correct the command description
Dr. Matthias St. Pierre [Fri, 16 Feb 2018 09:26:55 +0000 (10:26 +0100)]
pkeyparam.pod: correct the command description

The description was probably copy&pasted from pkey.pod and forgotten.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5390)

6 years agoConfigure: move down the treatment of seed sources
Richard Levitte [Thu, 15 Feb 2018 17:08:54 +0000 (18:08 +0100)]
Configure: move down the treatment of seed sources

Most of all, this is so it doesn't output mysterious text when we're
treating the phony config targets LISH, HASH and TABLE

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5383)

6 years agoAIX: make sure that the arflags value includes the command letter (r)
Richard Levitte [Thu, 15 Feb 2018 21:38:24 +0000 (22:38 +0100)]
AIX: make sure that the arflags value includes the command letter (r)

In previous OpenSSL versions, this letter was part of the make
variable AR.  However, following the usual convention (read: GNU),
this letter is supposed to be part of ARFLAGS.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5386)

6 years agoCheck the return code from ASN1_TIME_diff()
Matt Caswell [Mon, 12 Feb 2018 17:47:50 +0000 (17:47 +0000)]
Check the return code from ASN1_TIME_diff()

The function can fail so we should check the return code.

Found by Coverity

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/5339)

6 years agoThe function X509_gmtime_adj() can fail
Matt Caswell [Mon, 12 Feb 2018 17:43:38 +0000 (17:43 +0000)]
The function X509_gmtime_adj() can fail

Check for a failure and free a_tm as appropriate.

Found by Coverity

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/5339)

6 years agoIf s->ctx is NULL then this is an internal error
Matt Caswell [Mon, 12 Feb 2018 16:24:59 +0000 (16:24 +0000)]
If s->ctx is NULL then this is an internal error

Coverity was complaining because we checked if s->ctx is NULL and then
later on in the function deref s->ctx anyway. In reality if s->ctx is
NULL then this is an internal error.

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/5334)

6 years agoDRBG: make locking api truly private
Dr. Matthias St. Pierre [Thu, 15 Feb 2018 09:29:56 +0000 (10:29 +0100)]
DRBG: make locking api truly private

In PR #5295 it was decided that the locking api should remain private
and used only inside libcrypto. However, the locking functions were added
back to `libcrypto.num` by `mkdef.pl`, because the function prototypes
were still listed in `internal/rand.h`. (This header contains functions
which are internal, but shared between libcrypto and libssl.)

This commit moves the prototypes to `rand_lcl.h` and changes the names
to lowercase, following the convention therein. It also corrects an
outdated documenting comment.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5375)

6 years agoFix a gcc warning about possible fall through
Bernd Edlinger [Wed, 14 Feb 2018 20:30:32 +0000 (21:30 +0100)]
Fix a gcc warning about possible fall through

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5373)

6 years agoNOTES.UNIX: add additional note about --enable-new-dtags
Richard Levitte [Thu, 15 Feb 2018 09:06:15 +0000 (10:06 +0100)]
NOTES.UNIX: add additional note about --enable-new-dtags

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5374)

6 years agoAuto-size more of configdata.pm "disabled features"
Benjamin Kaduk [Wed, 14 Feb 2018 18:04:16 +0000 (12:04 -0600)]
Auto-size more of configdata.pm "disabled features"

configdata.pm -d prints out a lot of information, including a table
of what features are disabled, why, and the effect of that disablement
(in terms of preprocessor symbols defined and directories skipped).
The first column is already auto-sized, to easily accomodate future
disableable features with long names.  Also auto-size the second column,
to accomodate future reasons for disablement with long names as well.

Failing to take such precautions results in stderr spew from
configdata.pm -d when such long reasons are in use:

   Negative repeat count does nothing at ./configdata.pm line 14504.

Such output is pretty distracting from the actual desired output,
so try to avoid it if possible.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5371)

6 years agoOSSL_STORE: Add OSSL_STORE_vctrl()
Richard Levitte [Wed, 14 Feb 2018 09:28:08 +0000 (10:28 +0100)]
OSSL_STORE: Add OSSL_STORE_vctrl()

It's a convenient complement to OSSL_STORE_ctrl()

Suggested by Norm Green

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5363)

6 years agoPEM_read_bio_PrivateKey.pod: replace geek speek by something more serious
Dr. Matthias St. Pierre [Wed, 14 Feb 2018 15:56:09 +0000 (16:56 +0100)]
PEM_read_bio_PrivateKey.pod: replace geek speek by something more serious

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5369)

6 years agoVMS: build ia64 assembler files if 'ias' is available
Richard Levitte [Tue, 13 Feb 2018 19:51:07 +0000 (20:51 +0100)]
VMS: build ia64 assembler files if 'ias' is available

Avoid using crypto/modes/ghash-ia64.s, as it uses features that are
explicitely prohibited on VMS.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5357)

6 years agoVMS: modify crypto/bn/asm/ia64.S to build properly
Richard Levitte [Tue, 13 Feb 2018 19:48:48 +0000 (20:48 +0100)]
VMS: modify crypto/bn/asm/ia64.S to build properly

On VMS, 'abort' is really 'decc$abort'

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5357)

6 years agoVMS: add the possibility to use Itanium assembler with 'ias'
Richard Levitte [Tue, 13 Feb 2018 19:47:34 +0000 (20:47 +0100)]
VMS: add the possibility to use Itanium assembler with 'ias'

This does require the use of a port of 'ias' for VMS.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5357)

6 years agoHarmonize the make variables across all known platforms families
Richard Levitte [Tue, 13 Feb 2018 19:32:42 +0000 (20:32 +0100)]
Harmonize the make variables across all known platforms families

The make variables LIB_CFLAGS, DSO_CFLAGS and so on were used in
addition to CFLAGS and so on.  This works without problem on Unix and
Windows, where options with different purposes (such as -D and -I) can
appear anywhere on the command line and get accumulated as they come.
This is not necessarely so on VMS.  For example, macros must all be
collected and given through one /DEFINE, and the same goes for
inclusion directories (/INCLUDE).

So, to harmonize all platforms, we repurpose make variables starting
with LIB_, DSO_ and BIN_ to be all encompassing variables that
collects the corresponding values from CFLAGS, CPPFLAGS, DEFINES,
INCLUDES and so on together with possible config target values
specific for libraries DSOs and programs, and use them instead of the
general ones everywhere.

This will, for example, allow VMS to use the exact same generators for
generated files that go through cpp as all other platforms, something
that has been impossible to do safely before now.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5357)

6 years agod2i_X509.pod: clarify usage of the 'pp' function parameter
Dr. Matthias St. Pierre [Wed, 14 Feb 2018 11:21:26 +0000 (12:21 +0100)]
d2i_X509.pod: clarify usage of the 'pp' function parameter

The 'pp' function parameters of d2i_TYPE() and i2d_TYPE() are referenced
in the DESCRIPTION section as 'in' resp. 'out'. This commit renames the
references to 'ppin' resp. 'ppout' and adds an explaining sentence.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5365)

6 years agoIgnore an s_client psk in TLSv1.3 if not TLSv1.3 suitable
Matt Caswell [Tue, 30 Jan 2018 15:41:56 +0000 (15:41 +0000)]
Ignore an s_client psk in TLSv1.3 if not TLSv1.3 suitable

The s_client psk_use_session_cb callback has a comment stating that we
should ignore a key that isn't suitable for TLSv1.3. However we were
actually causing the connection to fail. Changing the return value fixes
the issue.

Also related to this is that the early_data extension was not marked as
TLSv1.3 only which it should be.

Fixes #5202

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/5205)

6 years agoMake sure we check the return value of extract_min_max()
Matt Caswell [Mon, 12 Feb 2018 17:22:17 +0000 (17:22 +0000)]
Make sure we check the return value of extract_min_max()

Commit 42d7d7dd6 turned this function from returning void to
returning an int error code. This instance of calling it was
missed.

Found by Coverity.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5338)

6 years agoFix a memory leak in an error path
Matt Caswell [Mon, 12 Feb 2018 16:58:33 +0000 (16:58 +0000)]
Fix a memory leak in an error path

Found by Coverity.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/5336)

6 years agoBuild files: parametrize cpp
Richard Levitte [Tue, 13 Feb 2018 19:04:35 +0000 (20:04 +0100)]
Build files: parametrize cpp

Instead of having the knowledge of the exact flags to run the C
preprocessor only and have it output on standard output in the deeper
recesses of the build file template, make it a config parameter, or
rely on build CPP in value ('$(CC) -E' on Unix).

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/5356)

6 years agoVMS: simplify config targets
Richard Levitte [Wed, 14 Feb 2018 09:34:12 +0000 (10:34 +0100)]
VMS: simplify config targets

All VMS config targets were literally copies of each other, only
differing in what argument the parameter seeking function vms_info()
received (the pointer size).

This could be hugely simplified by letting vms_info() detect what
pointer size was desired from the desired config target name instead.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5364)

6 years agoAvoid fragile aliasing of SHA224/384 update/final
Viktor Dukhovni [Wed, 14 Feb 2018 03:43:15 +0000 (22:43 -0500)]
Avoid fragile aliasing of SHA224/384 update/final

This is purported to save a few cycles, but makes the code less
obvious and more brittle, and in fact breaks on platforms where for
ABI continuity reasons there is a SHA2 implementation in libc, and
so EVP needs to call those to avoid conflicts.

A sufficiently good optimizer could simply generate the same entry
points for:

        foo(...) { ... }
    and
        bar(...) { return foo(...); }

but, even without that, the different is negligible, with the
"winner" varying from run to run (openssl speed -evp sha384):

    Old:
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes 16384 bytes
    sha384           28864.28k   117362.62k   266469.21k   483258.03k   635144.87k 649123.16k

    New:
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes 16384 bytes
    sha384           30055.18k   120725.98k   272057.26k   482847.40k   634585.09k 650308.27k

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agoUse both getrandom() and /dev/urandom by default on Linux.
Kurt Roeckx [Fri, 9 Feb 2018 23:30:29 +0000 (00:30 +0100)]
Use both getrandom() and /dev/urandom by default on Linux.

getrandom() is now used on Linux by default when using Linux >= 3.17
and glibc >= 2.25

Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #5314

6 years agoVMS: for testutil, make sure to use BIO_f_linebuffer
Richard Levitte [Tue, 13 Feb 2018 18:10:22 +0000 (19:10 +0100)]
VMS: for testutil, make sure to use BIO_f_linebuffer

Without that, output comes one character per line.  It's the same
issue as has been observed before, this happens when using write()
on a record oriented stream (possibly unbuffered too).

This also uncovered a bug in BIO_f_linebuffer, where this would cause
an error:

    BIO_write(bio, "1\n", 1);

I.e. there's a \n just after the part of the string that we currently
ask to get written.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5352)

6 years agoConfigure: if a file is generated, never assume it's in the source dir
Richard Levitte [Tue, 13 Feb 2018 18:46:10 +0000 (19:46 +0100)]
Configure: if a file is generated, never assume it's in the source dir

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5355)

6 years agos390x assembly pack: implement OPENSSL_rdtsc as STCKF
Patrick Steuer [Wed, 7 Feb 2018 17:49:29 +0000 (18:49 +0100)]
s390x assembly pack: implement OPENSSL_rdtsc as STCKF

.. if avalable. STCK has an artificial delay to ensure uniqueness
which can result in a performance penalty if used heavily
concurrently.

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5284)

6 years agoGenerate copyright year properly
Rich Salz [Tue, 13 Feb 2018 18:09:02 +0000 (13:09 -0500)]
Generate copyright year properly

Output copyright year depends on any input file(s) and the script.
This is not perfect, but better than what we had.
Also run 'make update'

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5350)

6 years agoOPENSSL_cleanup: cleanup secure memory
Dr. Matthias St. Pierre [Mon, 12 Feb 2018 01:37:27 +0000 (02:37 +0100)]
OPENSSL_cleanup: cleanup secure memory

If the global DRBGs are allocated on the secure heap, then calling
CRYPTO_secure_malloc_done() inside main() will have no effect, unless
OPENSSL_cleanup() has been called explicitely before that, because
otherwise the DRBGs will still be allocated. So it is better to cleanup
the secure heap automatically at the end of OPENSSL_cleanup().

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5294)

6 years agoDRBG: make the derivation function the default for ctr_drbg
Dr. Matthias St. Pierre [Thu, 8 Feb 2018 22:04:16 +0000 (23:04 +0100)]
DRBG: make the derivation function the default for ctr_drbg

The NIST standard presents two alternative ways for seeding the
CTR DRBG, depending on whether a derivation function is used or not.
In Section 10.2.1 of NIST SP800-90Ar1 the following is assessed:

  The use of the derivation function is optional if either an
  approved RBG or an entropy source provides full entropy output
  when entropy input is requested by the DRBG mechanism.
  Otherwise, the derivation function shall be used.

Since the OpenSSL DRBG supports being reseeded from low entropy random
sources (using RAND_POOL), the use of a derivation function is mandatory.
For that reason we change the default and replace the opt-in flag
RAND_DRBG_FLAG_CTR_USE_DF with an opt-out flag RAND_DRBG_FLAG_CTR_NO_DF.
This change simplifies the RAND_DRBG_new() calls.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5294)

6 years agoDRBG: unify initialization and cleanup code
Dr. Matthias St. Pierre [Thu, 8 Feb 2018 21:46:23 +0000 (22:46 +0100)]
DRBG: unify initialization and cleanup code

The functions drbg_setup() and drbg_cleanup() used to duplicate a lot of
code from RAND_DRBG_new() and RAND_DRBG_free(). This duplication has been
removed, which simplifies drbg_setup() and makes drbg_cleanup() obsolete.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5294)

6 years agoDRBG: add locking api
Dr. Matthias St. Pierre [Thu, 8 Feb 2018 15:40:32 +0000 (16:40 +0100)]
DRBG: add locking api

This commit adds three new accessors to the internal DRBG lock

   int RAND_DRBG_lock(RAND_DRBG *drbg)
   int RAND_DRBG_unlock(RAND_DRBG *drbg)
   int RAND_DRBG_enable_locking(RAND_DRBG *drbg)

The three shared DRBGs are intended to be used concurrently, so they
have locking enabled by default. It is the callers responsibility to
guard access to the shared DRBGs by calls to RAND_DRBG_lock() and
RAND_DRBG_unlock().

All other DRBG instances don't have locking enabled by default, because
they are intendended to be used by a single thread. If it is desired,
locking can be enabled by using RAND_DRBG_enable_locking().

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5294)

6 years agoPrepare for 1.1.1-pre2-dev
Matt Caswell [Tue, 13 Feb 2018 13:49:49 +0000 (13:49 +0000)]
Prepare for 1.1.1-pre2-dev

Reviewed-by: Richard Levitte <levitte@openssl.org>
6 years agoPrepare for 1.1.1-pre1 release OpenSSL_1_1_1-pre1
Matt Caswell [Tue, 13 Feb 2018 13:48:07 +0000 (13:48 +0000)]
Prepare for 1.1.1-pre1 release

Reviewed-by: Richard Levitte <levitte@openssl.org>
6 years agoUpdate copyright year
Matt Caswell [Tue, 13 Feb 2018 12:51:29 +0000 (12:51 +0000)]
Update copyright year

Reviewed-by: Richard Levitte <levitte@openssl.org>
6 years agoOpenSSL 1.1.1 is now in pre release
Matt Caswell [Tue, 13 Feb 2018 10:17:18 +0000 (10:17 +0000)]
OpenSSL 1.1.1 is now in pre release

Reviewed-by: Richard Levitte <levitte@openssl.org>
6 years agoUpdate last release letter for CHANGES and NEWS
Matt Caswell [Tue, 13 Feb 2018 10:09:34 +0000 (10:09 +0000)]
Update last release letter for CHANGES and NEWS

Reviewed-by: Richard Levitte <levitte@openssl.org>
6 years agoFix whitespace issues in CHANGES and NEWS
Dr. Matthias St. Pierre [Tue, 13 Feb 2018 01:04:50 +0000 (02:04 +0100)]
Fix whitespace issues in CHANGES and NEWS

Removed mixed tabs (converted tabs to eight spaces)

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5344)

6 years agoDocument new random generator in NEWS and CHANGES
Dr. Matthias St. Pierre [Tue, 13 Feb 2018 01:02:22 +0000 (02:02 +0100)]
Document new random generator in NEWS and CHANGES

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5344)

6 years agoUpdate NEWS file for new release
Matt Caswell [Mon, 12 Feb 2018 15:16:01 +0000 (15:16 +0000)]
Update NEWS file for new release

Updated the NEWS file with the most significant items from CHANGES

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5333)

6 years agoSome minor tweaks following TLSv1.3 becoming default
Matt Caswell [Mon, 12 Feb 2018 09:39:28 +0000 (09:39 +0000)]
Some minor tweaks following TLSv1.3 becoming default

Fix a typo in INSTALL and update the link in CHANGES

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5329)

6 years agoRemove code that prints "<SPACES/NULS>" in hexdumps
Bernd Edlinger [Mon, 12 Feb 2018 08:28:33 +0000 (09:28 +0100)]
Remove code that prints "<SPACES/NULS>" in hexdumps
when the data block ends with SPACEs or NULs.

The problem is, you can't see if the data ends
with SPACE or NUL or a combination of both.

This can happen for instance with
openssl rsautl -decrypt -hexdump

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5328)

6 years agosha/asm/sha512-armv8.pl: add hardware-assisted SHA512 subroutine.
Andy Polyakov [Sun, 11 Feb 2018 11:29:47 +0000 (12:29 +0100)]
sha/asm/sha512-armv8.pl: add hardware-assisted SHA512 subroutine.

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agocrypto/armcap.c: detect hardware-assisted SHA512 support.
Andy Polyakov [Sun, 11 Feb 2018 11:29:06 +0000 (12:29 +0100)]
crypto/armcap.c: detect hardware-assisted SHA512 support.

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agoThe function ssl_get_min_max_version() can fail
Matt Caswell [Fri, 9 Feb 2018 18:03:08 +0000 (18:03 +0000)]
The function ssl_get_min_max_version() can fail

We should always check the return code.

This fixes a coverity issue.

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5308)

6 years agoDon't overestimate the ticket age
Matt Caswell [Fri, 9 Feb 2018 16:39:27 +0000 (16:39 +0000)]
Don't overestimate the ticket age

On the client we calculate the age of the ticket in seconds but the server
may work in ms. Due to rounding errors we could overestimate the age by up
to 1s. It is better to underestimate it. Otherwise, if the RTT is very
short, when the server calculates the age reported by the client it could
be bigger than the age calculated on the server - which should never happen.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5306)

6 years agoFix include in manpage of X509_check_host
Daniël van Eeden [Sun, 11 Feb 2018 15:55:38 +0000 (10:55 -0500)]
Fix include in manpage of X509_check_host

Fixes Issue #5255

CLA: trivial

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5256)

6 years agoCopy name string in BIO_meth_new
Rich Salz [Sat, 10 Feb 2018 18:36:47 +0000 (13:36 -0500)]
Copy name string in BIO_meth_new

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5318)

6 years agoAvoid leaking peername data via accept BIOs
Viktor Dukhovni [Fri, 9 Feb 2018 23:34:33 +0000 (18:34 -0500)]
Avoid leaking peername data via accept BIOs

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agoSwap the check in ssl3_write_pending to avoid using
Bernd Edlinger [Fri, 9 Feb 2018 16:19:50 +0000 (17:19 +0100)]
Swap the check in ssl3_write_pending to avoid using
the possibly indeterminate pointer value in wpend_buf.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5305)

6 years agoFixes for no-tls1_2 and no-tls1_2-method
Matt Caswell [Fri, 9 Feb 2018 10:19:14 +0000 (10:19 +0000)]
Fixes for no-tls1_2 and no-tls1_2-method

The no-tls1_2 option does not work properly in conjunction with TLSv1.3
being enabled (which is now the default). This commit fixes the issues.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5301)

6 years agoRun "make update"
Nick Mathewson [Fri, 9 Feb 2018 14:03:07 +0000 (09:03 -0500)]
Run "make update"

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5150)

6 years agoIn err_all.c, include the *err.h headers.
Nick Mathewson [Tue, 23 Jan 2018 15:49:53 +0000 (10:49 -0500)]
In err_all.c, include the *err.h headers.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5150)

6 years agoImprove #include structure of pem{,2}.h
Nick Mathewson [Tue, 23 Jan 2018 15:48:35 +0000 (10:48 -0500)]
Improve #include structure of pem{,2}.h

  - pem2.h is empty, so pem.h doesn't need to include it.
  - pem2.h once declared ERR_load_PEM_strings(), so it should now
    include pemerr.h

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5150)

6 years agoRemove redundant declarations of ERR_load_*_strings()
Nick Mathewson [Tue, 23 Jan 2018 14:46:13 +0000 (09:46 -0500)]
Remove redundant declarations of ERR_load_*_strings()

In commit 52df25cf2e656146cb3b206d8220124f0417d03f, the
ERR_load_FOO_strings() functions were moved from their original
location in foo.h into new headers called fooerr.h.  But they were
never removed from their original locations.  This duplication
causes redundant-declaration warnings on programs that use OpenSSL's
headers with such warnings enabled.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5150)

6 years agoDon't calculate the Finished MAC twice
Matt Caswell [Thu, 8 Feb 2018 14:48:51 +0000 (14:48 +0000)]
Don't calculate the Finished MAC twice

In <= TLSv1.2 a Finished message always comes immediately after a CCS
except in the case of NPN where there is an additional message between
the CCS and Finished. Historically we always calculated the Finished MAC
when we processed the CCS. However to deal with NPN we also calculated it
when we receive the Finished message. Really this should only have been
done if we hand negotiated NPN.

This simplifies the code to only calculate the MAC when we receive the
Finished. In 1.1.1 we need to do it this way anyway because there is no
CCS (except in middlebox compat mode) in TLSv1.3.

Coincidentally, this commit also fixes the fact that no-nextprotoneg does
not currently work in master.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5285)

6 years agoConfiguration: move the handling of zlib_include to config files
Richard Levitte [Thu, 8 Feb 2018 22:26:22 +0000 (23:26 +0100)]
Configuration: move the handling of zlib_include to config files

It was a bit absurd to have this being specially handled in the build
file templates, especially that we have the 'includes' attribute.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5296)

6 years agoTurn off printf format checking for BIO_printf et al on Mac OS/X
Richard Levitte [Fri, 9 Feb 2018 12:45:58 +0000 (13:45 +0100)]
Turn off printf format checking for BIO_printf et al on Mac OS/X

Mac OS/X has a type for %j that doesn't agree with how we define it,
which gives incorrect warnings.  The easiest way out of that situation
is simply to turn off that check on Mac OS/X.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5302)

6 years agoSmall simplification in mkerr.pl
FdaSilvaYY [Thu, 8 Feb 2018 23:47:30 +0000 (18:47 -0500)]
Small simplification in mkerr.pl

As suggested in https://github.com/openssl/openssl/pull/5275

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5288)

6 years agoVMS: take care of includes
Richard Levitte [Fri, 9 Feb 2018 08:55:36 +0000 (09:55 +0100)]
VMS: take care of includes

Configurations/descrip.mms.tmpl didn't treat the includes config
attribute very well.  In fact, it didn't treat it at all!

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5295)

6 years agoFix glibc version detection.
Pauli [Thu, 8 Feb 2018 01:04:30 +0000 (11:04 +1000)]
Fix glibc version detection.
Simplify Posix timer detection.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5279)

6 years agoFix check of cpuid_asm_src config attribute
Richard Levitte [Fri, 9 Feb 2018 08:03:05 +0000 (09:03 +0100)]
Fix check of cpuid_asm_src config attribute

The contents of that attribute is C file names, not object file names.
This went undetected because quite a lot of systems have assembler
implementations anyway, so setting OPENSSL_CPUID_OBJ was correct for
them.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5291)

6 years agoRevert ".travis.yml: remove osx from build matrix."
Richard Levitte [Fri, 9 Feb 2018 08:12:47 +0000 (09:12 +0100)]
Revert ".travis.yml: remove osx from build matrix."

Recent changes seem to have gotten OS X back on track, so we should be
able to run our tests there again.

This reverts commit e12e903e9ac675d08f9dd0db1f0c1a2049232c21.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5292)

6 years agoCRYPTO_THREAD_run_once.pod: fix typo and punktuation
Dr. Matthias St. Pierre [Fri, 9 Feb 2018 07:52:56 +0000 (08:52 +0100)]
CRYPTO_THREAD_run_once.pod: fix typo and punktuation

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5293)

6 years agoFix no-chacha and no-poly1305
Matt Caswell [Thu, 8 Feb 2018 15:45:35 +0000 (15:45 +0000)]
Fix no-chacha and no-poly1305

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5287)

6 years agoutil/mkdef.pl: use better array in search of 'DEPRECATEDIN_'
Richard Levitte [Thu, 8 Feb 2018 11:31:05 +0000 (12:31 +0100)]
util/mkdef.pl: use better array in search of 'DEPRECATEDIN_'

%disabled_algorithms isn't necessarily initialised with the "algos"
'DEPRECATEDIN_1_1_0' etc.  However, we know that @known_algorithms has
them all, so use that to find them instead.

Fixes #5157
(where this was reported)

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5282)

6 years agoWith nmake, invoking $(MAKE) needs /$(MAKEFLAGS)
Richard Levitte [Wed, 7 Feb 2018 21:40:32 +0000 (22:40 +0100)]
With nmake, invoking $(MAKE) needs /$(MAKEFLAGS)

The slash should be there according to Microsoft documentation,
see https://msdn.microsoft.com/en-us/library/7cafx990.aspx

Fixes #5277

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5278)

6 years agoDon't run tls13encryptiontest on a shared Windows build
Matt Caswell [Wed, 7 Feb 2018 14:53:31 +0000 (14:53 +0000)]
Don't run tls13encryptiontest on a shared Windows build

tls13encryptiontest is an "internal" test. As with all the other internal
tests it should not be run on a shared native Windows build.

[extended tests]

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5266)

6 years agoFix some undefined behaviour in ossltest engine
Matt Caswell [Wed, 7 Feb 2018 14:20:31 +0000 (14:20 +0000)]
Fix some undefined behaviour in ossltest engine

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5266)

6 years agoFix clienthellotest with TLSv1.3
Matt Caswell [Wed, 7 Feb 2018 10:55:02 +0000 (10:55 +0000)]
Fix clienthellotest with TLSv1.3

If TLSv1.3 is enabled and combined with other options that extend the
size of the ClientHello, then the clienthello test can sometimes fail
because the ClientHello has grown too large. Part of the purpose of the
test is to check that the padding extension works properly. This requires
the ClientHello size to be kept within certain bounds.

By restricting the number of ciphersuites sent we can reduce the size of
the ClientHello.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5266)

6 years agoEnable TLSv1.3 by default
Matt Caswell [Tue, 6 Feb 2018 17:27:25 +0000 (17:27 +0000)]
Enable TLSv1.3 by default

[extended tests]

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5266)

6 years agoRevert "Modify test/afalgtest to fail if the afalg engine couldn't be loaded"
Richard Levitte [Wed, 7 Feb 2018 21:18:44 +0000 (22:18 +0100)]
Revert "Modify test/afalgtest to fail if the afalg engine couldn't be loaded"

It turns out that even if you successfully build the engine, it might
not load properly, so we cannot make the test program fail for it.

See the message in commit 25b9d11c002e5c71840c2a6733c5009d78f2c9db

This reverts commit 227a1e3f45bf06fdb00f2bdfb922f6f0d1f1d1de.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5276)

6 years agomake update ERROR_REBUILD=-rebuild
Richard Levitte [Wed, 7 Feb 2018 18:40:19 +0000 (19:40 +0100)]
make update ERROR_REBUILD=-rebuild

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5275)

6 years agomkerr.pl: When writing internal FOOerr.h, pay attention to disablable modules
Richard Levitte [Wed, 7 Feb 2018 18:23:39 +0000 (19:23 +0100)]
mkerr.pl: When writing internal FOOerr.h, pay attention to disablable modules

If a module is disablable (i.e. can be configured with 'no-FOO'), the
resulting header file needs to be guarded with a check of the
corresponding OPENSSL_NO_FOO.  While this seem fairly innocuous, it
has an impact on the information in util/*.num, generated by mkdef.pl.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5275)

6 years agoMake all private functions in e_afalg.c static
Richard Levitte [Wed, 7 Feb 2018 13:05:20 +0000 (14:05 +0100)]
Make all private functions in e_afalg.c static

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5270)

6 years agotest/recipes/30-test_afalg.t: set OPENSSL_ENGINES correctly
Richard Levitte [Wed, 7 Feb 2018 13:02:49 +0000 (14:02 +0100)]
test/recipes/30-test_afalg.t: set OPENSSL_ENGINES correctly

The afalg engine was moved down from engines/afalg/ to engines/, but
the test wasn't changed accordingly.  This was undetected because the
test program didn't fail when it couldn't load the engine.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5270)

6 years agoModify test/afalgtest to fail if the afalg engine couldn't be loaded
Richard Levitte [Wed, 7 Feb 2018 13:01:13 +0000 (14:01 +0100)]
Modify test/afalgtest to fail if the afalg engine couldn't be loaded

If you know that there's no afalg engine, don't run this test.
test/recipes/30-test_afalg.t checks this correctly.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5270)

6 years agoFix glibc specific conditional for Mac OS/X
Pauli [Wed, 7 Feb 2018 01:46:15 +0000 (11:46 +1000)]
Fix glibc specific conditional for Mac OS/X

MacOS seems to define __GLIBC__ but not __GLIBC_PREREQ.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5269)

6 years agoUnify timer code
Pauli [Mon, 5 Feb 2018 21:17:31 +0000 (07:17 +1000)]
Unify timer code

Remove the timer and TSC additional input code and instead provide a single
routine that attempts to use the "best" timer/counter available on the
system.  It attempts to use TSC, then various OS dependent resources and
finally several tries to obtain the date.  If any of these timer/counters
is successful, the rest are skipped.

No randomness is credited for this.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5231)

6 years agoMake OPENSSL_rdtsc universally available.
Pauli [Mon, 5 Feb 2018 21:16:26 +0000 (07:16 +1000)]
Make OPENSSL_rdtsc universally available.

If such a timer/counter register is not available, the return value is always
zero.  This matches the assembly implementations' behaviour.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5231)

6 years agoMake the OPENSSL_CPUID_OBJ define internal.
Pauli [Mon, 5 Feb 2018 21:15:53 +0000 (07:15 +1000)]
Make the OPENSSL_CPUID_OBJ define internal.
Patch by @levitte.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5231)

6 years agoCode cleanup: remove benchmark code from internal tests
Richard Levitte [Tue, 6 Feb 2018 19:01:19 +0000 (20:01 +0100)]
Code cleanup: remove benchmark code from internal tests

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/5268)

6 years agoRemove unused file
Rich Salz [Tue, 6 Feb 2018 20:27:03 +0000 (15:27 -0500)]
Remove unused file

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5267)

6 years agocrypto/evp/e_aes.c: add comments to s390x aes gcm implementation
Patrick Steuer [Sat, 3 Feb 2018 16:46:34 +0000 (17:46 +0100)]
crypto/evp/e_aes.c: add comments to s390x aes gcm implementation

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5230)

6 years agos390x assembly pack: add KMAC code path for aes-ccm
Patrick Steuer [Thu, 18 Jan 2018 09:14:30 +0000 (10:14 +0100)]
s390x assembly pack: add KMAC code path for aes-ccm

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5230)

6 years agoutil/mkdef.pl: Trust configdata.pm
Richard Levitte [Wed, 24 Jan 2018 13:17:39 +0000 (14:17 +0100)]
util/mkdef.pl: Trust configdata.pm

This script kept its own database of disablable algorithms, which is a
maintenance problem, as it's not always perfectly in sync with what
Configure does.  However, we do have all the data in configdata.pm,
produced by Configure, so let's use that instead.

Also, make sure to parse the *err.h header files, as they contain
function declarations that might not be present elsewhere.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5157)

6 years agoUse RAND_DRBG_bytes() for RAND_bytes() and RAND_priv_bytes()
Dr. Matthias St. Pierre [Sat, 3 Feb 2018 21:33:19 +0000 (22:33 +0100)]
Use RAND_DRBG_bytes() for RAND_bytes() and RAND_priv_bytes()

The functions RAND_bytes() and RAND_priv_bytes() are now both based
on a common implementation using RAND_DRBG_bytes() (if the default
OpenSSL rand method is active). This not only simplifies the code
but also has the advantage that additional input from a high precision
timer is added on every generate call if the timer is available.

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5251)

6 years agoFix size limitation of RAND_DRBG_bytes()
Dr. Matthias St. Pierre [Sat, 3 Feb 2018 21:32:47 +0000 (22:32 +0100)]
Fix size limitation of RAND_DRBG_bytes()

When comparing the implementations of drbg_bytes() and RAND_DRBG_bytes(),
it was noticed that the former split the buffer into chunks when calling
RAND_DRBG_generate() to circumvent the size limitation of the buffer
to outlen <= drb->max_request. This loop was missing in RAND_DRBG_bytes(),
so it was adopted from drbg_bytes().

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5251)

6 years agodrbg_bytes: remove check for DRBG_UNINITIALIZED state
Dr. Matthias St. Pierre [Sat, 3 Feb 2018 20:13:19 +0000 (21:13 +0100)]
drbg_bytes: remove check for DRBG_UNINITIALIZED state

This check not only prevented the automatic reinstantiation of the
DRBG, which is implemented in RAND_DRBG_generate(), but also prevented
an error message from being generated in the case of failure.

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5251)

6 years agoAdd MiddleboxCompat option to SSL_CONF_cmd man page
Matt Caswell [Fri, 2 Feb 2018 10:17:06 +0000 (10:17 +0000)]
Add MiddleboxCompat option to SSL_CONF_cmd man page

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5244)

6 years agoMake sure that exporting keying material is allowed
Tatsuhiro Tsujikawa [Sun, 21 Jan 2018 02:30:36 +0000 (11:30 +0900)]
Make sure that exporting keying material is allowed

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4944)

6 years agoRemove generation of exporter master secret on client application traffic
Tatsuhiro Tsujikawa [Thu, 18 Jan 2018 06:39:45 +0000 (15:39 +0900)]
Remove generation of exporter master secret on client application traffic

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4944)

6 years agoGenerate exporter_master_secret after server Finished
Tatsuhiro Tsujikawa [Sat, 16 Dec 2017 07:46:18 +0000 (16:46 +0900)]
Generate exporter_master_secret after server Finished

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4944)