There are two changes here:

a) The original bug: CMS_final() was not taking into account the result
of CMS_dataFinal() when returning its return code. It might be that
CMS_dataFinal() failed, in which case an error would even be raised, but
the return code of CMS_final() would be that of SMIME_crlf_copy().

b) While fixing (a), it was noticed that tons of other places in the
code were not checking the result code of SMIME_crlf_copy(). It looks
like this function returns a failure (0) when BIO_new() fails, so, a
memory allocation.

I checked an openssl build log[1], and there are tests for CMS, and none
of them failed.

The failure case is explained in [2]:
"""
It means some broken message that will later fail parsing/decryption/signature 
verification can be produced.
"""

So, my ponderings:
- for (a), was there perhaps a test case added to the openssl case to cover for 
that mistake? If not, could we come up with one in the test suite?

- the fix for (b) was a drive-by fix, and seems correct, but it is
touching more code. What do you think about isolating the fix in this
SRU to just the CMS_final() function? Pros and cons? So we fix the
CMS_final() function, in the sense that we will keep checking both the
return code of SMIME_crlf_copy() and CMS_dataFinal().


1. 
https://launchpadlibrarian.net/692262295/buildlog_ubuntu-jammy-amd64.openssl_3.0.2-0ubuntu1.12_BUILDING.txt.gz
2. https://github.com/openssl/openssl/pull/18876#issuecomment-1323830916

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to openssl in Ubuntu.
https://bugs.launchpad.net/bugs/1994165

Title:
  CMS_final: do not ignore CMS_dataFinal result

Status in openssl package in Ubuntu:
  Fix Released
Status in openssl source package in Jammy:
  In Progress
Status in openssl source package in Kinetic:
  Won't Fix
Status in openssl source package in Lunar:
  Fix Released

Bug description:
  === SRU information ===
  [Meta]
  This bug is part of a series of three bugs for a single SRU.
  The "central" bug with the global information and debdiff is 
http://pad.lv/2033422

  [Impact]
  S/MIME signature can fail silently
  The commit by upstream propagates the return code of some functions rather 
than ignore it.

  [Test plan]
  This issue is not very simple to reproduce because "openssl cms" cannot be 
used to do so. This has to be done with the openssl API instead.
  At least the bug reportere here and the one on openssl's bug tracker have 
confirmed the patch solves the issue. Additionally, the bug reporter here has 
tested the PPA that contains the patche and validated it. Finally, I read 
through the patch attentively.

  [Where problems could occur]
  At this point it is unlikely an error would appear. The openssl bug tracker 
mentions nothing related to this patch which landed more than a year ago. The 
patch is simple and doesn't change the code logic.

  [Patches]
  The patches come directly from upstream and apply cleanly.

  https://github.com/openssl/openssl/pull/18876

  * 
https://git.launchpad.net/~adrien-n/ubuntu/+source/openssl/tree/debian/patches/jammy-sru-0001-REGRESSION-CMS_final-do-not-ignore-CMS_dataFinal-res.patch?h=jammy-sru&id=04ef023920ab08fba214817523fba897527dfff0
  * 
https://git.launchpad.net/~adrien-n/ubuntu/+source/openssl/tree/debian/patches/jammy-sru-0002-Handle-SMIME_crlf_copy-return-code.patch?h=jammy-sru&id=04ef023920ab08fba214817523fba897527dfff0

  === Original description ===

  https://github.com/openssl/openssl/pull/18876

  The CMS_dataFinal result is important as signature may fail, however, it
  is ignored while returning success from CMS_final.

  Please add this fix to The openssl 3.0.2 "Jammy Jellyfish (supported)"

  Thanks

  Upstream commit:

  ```
  commit 67c0460b89cc1b0644a1a59af78284dfd8d720af
  Author: Alon Bar-Lev <alon.bar...@gmail.com>
  Date:   Tue Jul 26 15:17:06 2022 +0300

      Handle SMIME_crlf_copy return code

      Currently the SMIME_crlf_copy result is ignored in all usages. It does
      return failure when memory allocation fails.

      This patch handles the SMIME_crlf_copy return code in all
  occurrences.

      Signed-off-by: Alon Bar-Lev <alon.bar...@gmail.com>

      Reviewed-by: Tomas Mraz <to...@openssl.org>
      Reviewed-by: Paul Dale <pa...@openssl.org>
      Reviewed-by: Hugo Landau <hlan...@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/18876)
  ```

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1994165/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to