openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2024
- 2 participants
- 1220 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2024-06-27 21:06:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Thu Jun 27 21:06:27 2024 rev:2528 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
Old:
----
factory:non-oss_4040.1_and_before.packages.zst
factory:non-oss_4041.1.packages.zst
factory:non-oss_4042.1.packages.zst
factory:non-oss_4043.2.packages.zst
factory:non-oss_4044.2.packages.zst
factory:non-oss_4047.2.packages.zst
factory:non-oss_4049.2.packages.zst
factory:non-oss_4051.2.packages.zst
factory:non-oss_4052.2.packages.zst
factory:non-oss_4054.1.packages.zst
factory:non-oss_4057.1.packages.zst
factory_20240609_and_before.packages.zst
factory_20240610.packages.zst
factory_20240611.packages.zst
factory_20240612.packages.zst
factory_20240613.packages.zst
factory_20240617.packages.zst
factory_20240619.packages.zst
factory_20240620.packages.zst
factory_20240621.packages.zst
factory_20240622.packages.zst
factory_20240624.packages.zst
New:
----
factory:non-oss_4057.1_and_before.packages.zst
factory:non-oss_4060.1.packages.zst
factory_20240624_and_before.packages.zst
factory_20240625.packages.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2024-06-27 19:15:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Thu Jun 27 19:15:54 2024 rev:4061 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MicroOS-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:58.933126215 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:58.937126362 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__MicroOS___20240625" schemaversion="4.1">
+<image name="OBS__MicroOS___20240627" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20240625</productvar>
+ <productvar name="VERSION">20240627</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:microos:20240625,openSUSE MicroOS</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:microos:20240627,openSUSE MicroOS</productinfo>
<productinfo name="LINGUAS">en_US </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/MicroOS/20240625/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/MicroOS/20240627/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ openSUSE-Addon-NonOss-ftp-ftp-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:58.973127682 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:58.977127828 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE-Addon-NonOss___20240625" schemaversion="4.1">
+<image name="OBS__openSUSE-Addon-NonOss___20240627" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20240625</productvar>
+ <productvar name="VERSION">20240627</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-addon-nonoss:20240625,openSUSE NonOSS Addon</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-addon-nonoss:20240627,openSUSE NonOSS Addon</productinfo>
<productinfo name="LINGUAS">af ar be_BY bg br ca cy el et ga gl gu_IN he hi_IN hr ka km ko lt mk nn pa_IN rw sk sl sr_CS ss st tg th tr uk ve vi xh zu </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2024…</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2024…</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ openSUSE-cd-mini-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.005128855 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.009129002 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20240625" schemaversion="4.1">
+<image name="OBS__openSUSE___20240627" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20240625</productvar>
+ <productvar name="VERSION">20240627</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20240625,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20240627,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20240625/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20240627/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
openSUSE-dvd5-dvd-x86_64.kiwi: same change
++++++ openSUSE-ftp-ftp-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.077131494 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.081131641 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20240625" schemaversion="4.1">
+<image name="OBS__openSUSE___20240627" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -23,7 +23,7 @@
<productvar name="DISTNAME">openSUSE</productvar>
<productvar name="FLAVOR">ftp</productvar>
<productvar name="MAKE_LISTINGS">true</productvar>
- <productvar name="MEDIUM_NAME">openSUSE-20240625-x86_64</productvar>
+ <productvar name="MEDIUM_NAME">openSUSE-20240627-x86_64</productvar>
<productvar name="MULTIPLE_MEDIA">true</productvar>
<productvar name="PRODUCT_DIR">/</productvar>
<productvar name="PRODUCT_NAME">$DISTNAME-$FLAVOR</productvar>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20240625</productvar>
+ <productvar name="VERSION">20240627</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20240625,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20240627,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20240625/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20240627/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="DEBUGMEDIUM">2</productoption>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ Aeon.product ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.137133694 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.141133841 +0200
@@ -6,7 +6,7 @@
<name>Aeon</name>
<releasepkgname>Aeon-release</releasepkgname>
<endoflife/>
- <version>20240625</version>
+ <version>20240627</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>Aeon</productline>
++++++ Kalpa.product ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.161134575 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.165134721 +0200
@@ -6,7 +6,7 @@
<name>Kalpa</name>
<releasepkgname>Kalpa-release</releasepkgname>
<endoflife/>
- <version>20240625</version>
+ <version>20240627</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>Kalpa</productline>
++++++ MicroOS.product ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.193135747 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.197135894 +0200
@@ -6,7 +6,7 @@
<name>MicroOS</name>
<releasepkgname>MicroOS-release</releasepkgname>
<endoflife/>
- <version>20240625</version>
+ <version>20240627</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>MicroOS</productline>
++++++ openSUSE-Addon-NonOss.product ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.309140000 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.313140147 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<summary>openSUSE NonOSS Addon</summary>
<shortsummary>non oss addon</shortsummary>
++++++ openSUSE.product ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.341141174 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.345141320 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<productline>openSUSE</productline>
++++++ unsorted.yml ++++++
--- /var/tmp/diff_new_pack.GTReyS/_old 2024-06-27 19:15:59.477146160 +0200
+++ /var/tmp/diff_new_pack.GTReyS/_new 2024-06-27 19:15:59.489146600 +0200
@@ -333,6 +333,7 @@
- SwayNotificationCenter-bash-completion
- SwayNotificationCenter-fish-completion
- SwayNotificationCenter-zsh-completion
+ - TeXmacs
- ThePEG-devel
- TreeMaker
- UEFITool
@@ -11366,7 +11367,6 @@
- libSoundTouch1-32bit
- libSoundTouchDll1
- libStatTimer2
- - libSvtAv1Dec0
- libTMCG-devel
- libTMCG18
- libThePEG30
@@ -14782,7 +14782,7 @@
- libopenmpi4-gnu-hpc
- libopenmpi5-gnu-hpc
- libopenmpi_4_1_6-gnu-hpc
- - libopenmpi_5_0_2-gnu-hpc
+ - libopenmpi_5_0_3-gnu-hpc
- libopenmpt-devel
- libopenmpt-modplug-devel
- libopenmpt0-32bit
@@ -14794,7 +14794,7 @@
- libopenshot-audio-devel
- libopenshot-audio9
- libopenshot-devel
- - libopenshot25
+ - libopenshot26
- libopenslide-devel
- libopenslide0
- libopensm9
@@ -15387,7 +15387,6 @@
- libqt5-qtnetworkauth-examples
- libqt5-qtnetworkauth-private-headers-devel
- libqt5-qtpaths
- - libqt5-qtpbfimageformat
- libqt5-qtpdf-devel
- libqt5-qtpdf-examples
- libqt5-qtpdf-imports
@@ -17109,7 +17108,7 @@
- libzbc-devel
- libzbc-gui
- libzbc-tools
- - libzbc5
+ - libzbc6
- libzck-devel
- libzdb-devel
- libzdb13
@@ -20107,6 +20106,7 @@
- openSUSE-release-usb-gnome
- openSUSE-release-usb-kde
- openSUSE-release-usb-x11
+ - openSUSE-repos-Leap
- openSUSE-repos-MicroOS
- openSUSE-repos-MicroOS-NVIDIA
- openSUSE-repos-Slowroll
@@ -20236,12 +20236,12 @@
- openmpi_4_1_6-gnu-hpc-docs
- openmpi_4_1_6-gnu-hpc-macros-devel
- openmpi_4_1_6-gnu-hpc-testsuite
- - openmpi_5_0_2-gnu-hpc
- - openmpi_5_0_2-gnu-hpc-devel
- - openmpi_5_0_2-gnu-hpc-devel-static
- - openmpi_5_0_2-gnu-hpc-docs
- - openmpi_5_0_2-gnu-hpc-macros-devel
- - openmpi_5_0_2-gnu-hpc-testsuite
+ - openmpi_5_0_3-gnu-hpc
+ - openmpi_5_0_3-gnu-hpc-devel
+ - openmpi_5_0_3-gnu-hpc-devel-static
+ - openmpi_5_0_3-gnu-hpc-docs
+ - openmpi_5_0_3-gnu-hpc-macros-devel
+ - openmpi_5_0_3-gnu-hpc-testsuite
- openmpt123
- openmw
- opennlp
@@ -25782,6 +25782,7 @@
- python310-musicbrainzngs
- python310-mutagen
- python310-mutatorMath
+ - python310-mutf8
- python310-mutmut
- python310-mutt-ics
- python310-mwclient
@@ -29312,6 +29313,7 @@
- python311-musicbrainzngs
- python311-mutagen
- python311-mutatorMath
+ - python311-mutf8
- python311-mutmut
- python311-mutt-ics
- python311-mwclient
@@ -32859,6 +32861,7 @@
- python312-musicbrainzngs
- python312-mutagen
- python312-mutatorMath
+ - python312-mutf8
- python312-mutt-ics
- python312-mwclient
- python312-mycli
@@ -34829,6 +34832,7 @@
- qt6-qt5compat-docs-html
- qt6-qt5compat-docs-qch
- qt6-qt5compat-private-devel
+ - qt6-qtpbfimageformat
- qt6-quick-devel
- qt6-quick-private-devel
- qt6-quick3d
@@ -35050,6 +35054,7 @@
- qtodotxt
- qtox
- qtractor
+ - qtractor-doc-pdf
- qtxdg-tools
- quakespasm
- quantum-espresso
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2024-06-27 19:15:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Thu Jun 27 19:15:51 2024 rev:2973 rq: version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/000release-packages/Aeon-release.changes 2024-06-27 16:41:34.022439829 +0200
+++ /work/SRC/openSUSE:Factory/.000release-packages.new.18349/Aeon-release.changes 2024-06-27 19:15:53.264918182 +0200
@@ -2 +2 @@
-Thu Jun 27 14:41:31 UTC 2024 - openSUSE <packaging(a)lists.opensuse.org>
+Thu Jun 27 17:15:50 UTC 2024 - openSUSE <packaging(a)lists.opensuse.org>
Kalpa-release.changes: same change
MicroOS-release.changes: same change
openSUSE-Addon-NonOss-release.changes: same change
openSUSE-release.changes: same change
stub.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
Kalpa-release.spec: same change
MicroOS-release.spec: same change
openSUSE-Addon-NonOss-release.spec: same change
openSUSE-release.spec: same change
stub.spec: same change
++++++ weakremovers.inc ++++++
--- /var/tmp/diff_new_pack.uDntgv/_old 2024-06-27 19:15:55.388996149 +0200
+++ /var/tmp/diff_new_pack.uDntgv/_new 2024-06-27 19:15:55.400996590 +0200
@@ -10188,6 +10188,7 @@
Provides: weakremover(libSoapySDR0_7)
Provides: weakremover(libSoundTouch0)
Provides: weakremover(libSoundTouch0-32bit)
+Provides: weakremover(libSvtAv1Dec0)
Provides: weakremover(libSvtAv1Enc-suse0)
Provides: weakremover(libSvtAv1Enc0)
Provides: weakremover(libSvtAv1Enc1)
@@ -16071,6 +16072,7 @@
Provides: weakremover(libopenmpi_4_1_4-gnu-hpc)
Provides: weakremover(libopenmpi_4_1_5-gnu-hpc)
Provides: weakremover(libopenmpi_5_0_0-gnu-hpc)
+Provides: weakremover(libopenmpi_5_0_2-gnu-hpc)
Provides: weakremover(libopenmpt_modplug1-32bit)
Provides: weakremover(libopenraw1)
Provides: weakremover(libopenraw1-32bit)
@@ -16089,6 +16091,7 @@
Provides: weakremover(libopenshot21)
Provides: weakremover(libopenshot23)
Provides: weakremover(libopenshot24)
+Provides: weakremover(libopenshot25)
Provides: weakremover(libopensm5)
Provides: weakremover(libopensm5-32bit)
Provides: weakremover(libopensm8)
@@ -16998,6 +17001,7 @@
Provides: weakremover(libqt5-qtgamepad-devel-32bit)
Provides: weakremover(libqt5-qtimageformats-32bit)
Provides: weakremover(libqt5-qtnetworkauth-devel-32bit)
+Provides: weakremover(libqt5-qtpbfimageformat)
Provides: weakremover(libqt5-qtremoteobjects-devel-32bit)
Provides: weakremover(libqt5-qtscript-devel-32bit)
Provides: weakremover(libqt5-qtscxml-devel-32bit)
@@ -19206,6 +19210,7 @@
Provides: weakremover(libzbc-5_8_4)
Provides: weakremover(libzbc-5_8_5)
Provides: weakremover(libzbc-5_9_0)
+Provides: weakremover(libzbc5)
Provides: weakremover(libzebra1)
Provides: weakremover(libzeitgeist-1_0-1-32bit)
Provides: weakremover(libzeitgeist-2_0-0)
@@ -20854,6 +20859,12 @@
Provides: weakremover(openmpi_5_0_0-gnu-hpc-docs)
Provides: weakremover(openmpi_5_0_0-gnu-hpc-macros-devel)
Provides: weakremover(openmpi_5_0_0-gnu-hpc-testsuite)
+Provides: weakremover(openmpi_5_0_2-gnu-hpc)
+Provides: weakremover(openmpi_5_0_2-gnu-hpc-devel)
+Provides: weakremover(openmpi_5_0_2-gnu-hpc-devel-static)
+Provides: weakremover(openmpi_5_0_2-gnu-hpc-docs)
+Provides: weakremover(openmpi_5_0_2-gnu-hpc-macros-devel)
+Provides: weakremover(openmpi_5_0_2-gnu-hpc-testsuite)
Provides: weakremover(openrdate)
Provides: weakremover(opensc-32bit)
Provides: weakremover(openslp-32bit)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2024-06-27 16:41:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Thu Jun 27 16:41:32 2024 rev:2972 rq: version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/000release-packages/Aeon-release.changes 2024-06-26 04:15:51.309727690 +0200
+++ /work/SRC/openSUSE:Factory/.000release-packages.new.18349/Aeon-release.changes 2024-06-27 16:41:34.022439829 +0200
@@ -2 +2 @@
-Wed Jun 26 02:15:46 UTC 2024 - openSUSE <packaging(a)lists.opensuse.org>
+Thu Jun 27 14:41:31 UTC 2024 - openSUSE <packaging(a)lists.opensuse.org>
Kalpa-release.changes: same change
MicroOS-release.changes: same change
openSUSE-Addon-NonOss-release.changes: same change
openSUSE-release.changes: same change
stub.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ Aeon-release.spec ++++++
--- /var/tmp/diff_new_pack.mj44Xx/_old 2024-06-27 16:41:35.814505470 +0200
+++ /var/tmp/diff_new_pack.mj44Xx/_new 2024-06-27 16:41:35.814505470 +0200
@@ -17,7 +17,7 @@
Name: Aeon-release
-Version: 20240625
+Version: 20240627
Release: 0
Summary: openSUSE Aeon
License: GPL-2.0-or-later
@@ -174,9 +174,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = Aeon
-Provides: product(Aeon) = 20240625-0
+Provides: product(Aeon) = 20240627-0
Provides: product-label() = openSUSE%20Aeon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aaeon%3A20240625
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aaeon%3A20240627
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(Aeon)
@@ -192,7 +192,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(Aeon) = 20240625-0
+Provides: product_flavor(Aeon) = 20240627-0
Summary: openSUSE Aeon%{?betaversion: %{betaversion}}
%description appliance
@@ -257,11 +257,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>Aeon</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:aeon:20240625</cpeid>
+ <cpeid>cpe:/o:opensuse:aeon:20240627</cpeid>
<productline>Aeon</productline>
<register>
<pool>
++++++ Kalpa-release.spec ++++++
--- /var/tmp/diff_new_pack.mj44Xx/_old 2024-06-27 16:41:35.846506643 +0200
+++ /var/tmp/diff_new_pack.mj44Xx/_new 2024-06-27 16:41:35.850506788 +0200
@@ -17,7 +17,7 @@
Name: Kalpa-release
-Version: 20240625
+Version: 20240627
Release: 0
Summary: openSUSE Kalpa
License: GPL-2.0-or-later
@@ -174,9 +174,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = Kalpa
-Provides: product(Kalpa) = 20240625-0
+Provides: product(Kalpa) = 20240627-0
Provides: product-label() = openSUSE%20Kalpa
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Akalpa%3A20240625
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Akalpa%3A20240627
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(Kalpa)
@@ -192,7 +192,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(Kalpa) = 20240625-0
+Provides: product_flavor(Kalpa) = 20240627-0
Summary: openSUSE Kalpa%{?betaversion: %{betaversion}}
%description appliance
@@ -257,11 +257,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>Kalpa</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:kalpa:20240625</cpeid>
+ <cpeid>cpe:/o:opensuse:kalpa:20240627</cpeid>
<productline>Kalpa</productline>
<register>
<pool>
++++++ MicroOS-release.spec ++++++
--- /var/tmp/diff_new_pack.mj44Xx/_old 2024-06-27 16:41:35.886508108 +0200
+++ /var/tmp/diff_new_pack.mj44Xx/_new 2024-06-27 16:41:35.890508254 +0200
@@ -17,7 +17,7 @@
Name: MicroOS-release
-Version: 20240625
+Version: 20240627
Release: 0
Summary: openSUSE MicroOS
License: GPL-2.0-or-later
@@ -179,9 +179,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = MicroOS
-Provides: product(MicroOS) = 20240625-0
+Provides: product(MicroOS) = 20240627-0
Provides: product-label() = openSUSE%20MicroOS
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20240625
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20240627
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(MicroOS)
@@ -197,7 +197,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(MicroOS) = 20240625-0
+Provides: product_flavor(MicroOS) = 20240627-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description dvd
@@ -213,7 +213,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(MicroOS) = 20240625-0
+Provides: product_flavor(MicroOS) = 20240627-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description appliance
@@ -278,11 +278,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>MicroOS</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:microos:20240625</cpeid>
+ <cpeid>cpe:/o:opensuse:microos:20240627</cpeid>
<productline>MicroOS</productline>
<register>
<pool>
++++++ openSUSE-Addon-NonOss-release.spec ++++++
--- /var/tmp/diff_new_pack.mj44Xx/_old 2024-06-27 16:41:35.918509280 +0200
+++ /var/tmp/diff_new_pack.mj44Xx/_new 2024-06-27 16:41:35.922509426 +0200
@@ -18,7 +18,7 @@
Name: openSUSE-Addon-NonOss-release
%define product openSUSE-Addon-NonOss
-Version: 20240625
+Version: 20240627
#!BcntSyncTag: openSUSE-Addon-NonOss
Release: 0
Summary: openSUSE NonOSS Addon
@@ -26,9 +26,9 @@
Group: System/Fhs
Provides: %name-%version
Provides: product() = openSUSE%2DAddon%2DNonOss
-Provides: product(openSUSE-Addon-NonOss) = 20240625-0
+Provides: product(openSUSE-Addon-NonOss) = 20240627-0
Provides: product-label() = non%20oss%20addon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20240625
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20240627
@@ -48,10 +48,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20240625</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20240627</cpeid>
<register>
<pool>
</pool>
++++++ openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.mj44Xx/_old 2024-06-27 16:41:35.950510452 +0200
+++ /var/tmp/diff_new_pack.mj44Xx/_new 2024-06-27 16:41:35.954510599 +0200
@@ -20,7 +20,7 @@
#define betaversion %{nil}
%define codename Tumbleweed
Name: openSUSE-release
-Version: 20240625
+Version: 20240627
Release: 0
# 0 is the product release, not the build release of this package
Summary: openSUSE Tumbleweed
@@ -185,7 +185,7 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20240625-0
+Provides: product(openSUSE) = 20240627-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -199,7 +199,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20240625
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20240627
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
Requires: product_flavor(openSUSE)
@@ -213,7 +213,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(ftp)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description ftp
@@ -228,7 +228,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(mini)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description mini
@@ -243,7 +243,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description dvd
@@ -258,7 +258,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-kde)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-kde
@@ -273,7 +273,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-x11)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-x11
@@ -288,7 +288,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-gnome)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-gnome
@@ -303,7 +303,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-xfce)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-xfce
@@ -318,7 +318,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-kde)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-kde
@@ -333,7 +333,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-gnome)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-gnome
@@ -348,7 +348,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-x11)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-x11
@@ -363,7 +363,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance
@@ -378,7 +378,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-docker)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-docker
@@ -393,7 +393,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-kvm)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-kvm
@@ -408,7 +408,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vmware)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vmware
@@ -423,7 +423,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-openstack)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-openstack
@@ -438,7 +438,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-hyperv)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-hyperv
@@ -453,7 +453,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vagrant)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vagrant
@@ -468,7 +468,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-wsl)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-wsl
@@ -483,7 +483,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-custom)
-Provides: product_flavor(openSUSE) = 20240625-0
+Provides: product_flavor(openSUSE) = 20240627-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-custom
@@ -566,10 +566,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20240625</version>
+ <version>20240627</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20240625</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20240627</cpeid>
<productline>openSUSE</productline>
<register>
<target>openSUSE-Tumbleweed-x86_64</target>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-crt-cpp for openSUSE:Factory checked in at 2024-06-27 16:04:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-crt-cpp (Old)
and /work/SRC/openSUSE:Factory/.aws-crt-cpp.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-crt-cpp"
Thu Jun 27 16:04:58 2024 rev:9 rq:1183558 version:0.27.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-crt-cpp/aws-crt-cpp.changes 2024-06-14 19:07:23.331069311 +0200
+++ /work/SRC/openSUSE:Factory/.aws-crt-cpp.new.18349/aws-crt-cpp.changes 2024-06-27 16:05:32.639552161 +0200
@@ -1,0 +2,11 @@
+Wed Jun 26 11:47:43 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.27.1
+ * cbor binding by @TingDaoK in (#627)
+ * Fix ASan report about alloc/dealloc mismatch
+ when compiled with C++23 by @waahm7 in (#633)
+- from version 0.27.0
+ * clang-format 18 by @graebm in (#628)
+ * Update aes interface by @DmitriyMusatkin in (#631)
+
+-------------------------------------------------------------------
Old:
----
v0.26.12.tar.gz
New:
----
v0.27.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-crt-cpp.spec ++++++
--- /var/tmp/diff_new_pack.40MbfY/_old 2024-06-27 16:05:33.075568170 +0200
+++ /var/tmp/diff_new_pack.40MbfY/_new 2024-06-27 16:05:33.075568170 +0200
@@ -20,7 +20,7 @@
%define library_soversion 1
Name: aws-crt-cpp
-Version: 0.26.12
+Version: 0.27.1
Release: 0
Summary: AWS C++ wrapper for AWS SDK C libraries
License: Apache-2.0
++++++ v0.26.12.tar.gz -> v0.27.1.tar.gz ++++++
++++ 5397 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-cal for openSUSE:Factory checked in at 2024-06-27 16:04:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-cal (Old)
and /work/SRC/openSUSE:Factory/.aws-c-cal.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-cal"
Thu Jun 27 16:04:57 2024 rev:7 rq:1183557 version:0.7.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-cal/aws-c-cal.changes 2024-06-06 12:32:22.943957675 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-cal.new.18349/aws-c-cal.changes 2024-06-27 16:05:31.819522053 +0200
@@ -1,0 +2,12 @@
+Wed Jun 26 11:51:44 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.7.0
+ * clang-format 18 by @graebm in (#187)
+ * Implement runtime check on libcrypto linkage
+ by @WillChilds-Klein in (#186)
+ * Pin AWS-LC until it's fixed for manylinux1
+ by @graebm in (#188)
+ * Make AES GCM more consistent cross platform
+ by @DmitriyMusatkin in (#189)
+
+-------------------------------------------------------------------
Old:
----
v0.6.15.tar.gz
New:
----
v0.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-cal.spec ++++++
--- /var/tmp/diff_new_pack.2mLaFK/_old 2024-06-27 16:05:32.323540559 +0200
+++ /var/tmp/diff_new_pack.2mLaFK/_new 2024-06-27 16:05:32.327540705 +0200
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 0unstable
Name: aws-c-cal
-Version: 0.6.15
+Version: 0.7.0
Release: 0
Summary: AWS C99 wrapper for cryptography primitives
License: Apache-2.0
++++++ v0.6.15.tar.gz -> v0.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/.github/workflows/ci.yml new/aws-c-cal-0.7.0/.github/workflows/ci.yml
--- old/aws-c-cal-0.6.15/.github/workflows/ci.yml 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/.github/workflows/ci.yml 2024-06-21 17:52:29.000000000 +0200
@@ -129,6 +129,15 @@
python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
python builder.pyz build -p ${{ env.PACKAGE_NAME }}
+ windows-debug:
+ runs-on: windows-2022 # latest
+ steps:
+ - name: Build ${{ env.PACKAGE_NAME }} + consumers
+ run: |
+ python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
+ python builder.pyz build -p ${{ env.PACKAGE_NAME }} --config Debug --variant=just-tests
+
+
windows-vc14:
runs-on: windows-2019 # windows-2019 is last env with Visual Studio 2015 (v14.0)
strategy:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/.github/workflows/clang-format.yml new/aws-c-cal-0.7.0/.github/workflows/clang-format.yml
--- old/aws-c-cal-0.6.15/.github/workflows/clang-format.yml 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/.github/workflows/clang-format.yml 2024-06-21 17:52:29.000000000 +0200
@@ -5,14 +5,12 @@
jobs:
clang-format:
- runs-on: ubuntu-20.04 # latest
+ runs-on: ubuntu-24.04 # latest
steps:
- name: Checkout Sources
- uses: actions/checkout@v1
+ uses: actions/checkout@v4
- name: clang-format lint
- uses: DoozyX/clang-format-lint-action(a)v0.3.1
- with:
- # List of extensions to check
- extensions: c,h
+ run: |
+ ./format-check.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/builder.json new/aws-c-cal-0.7.0/builder.json
--- old/aws-c-cal-0.6.15/builder.json 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/builder.json 2024-06-21 17:52:29.000000000 +0200
@@ -15,7 +15,8 @@
"linux": {
"upstream": [
{
- "name": "aws-lc"
+ "name": "aws-lc",
+ "revision": "v1.29.0", "_comment": "avoid commit a0d636e7 which breaks manylinux1"
}
]
},
@@ -89,6 +90,11 @@
},
"no-tests": {
"!test_steps": []
+ },
+ "just-tests": {
+ "!test_steps": [
+ "test"
+ ]
}
},
"test_steps": [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/format-check.py new/aws-c-cal-0.7.0/format-check.py
--- old/aws-c-cal-0.6.15/format-check.py 1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-0.7.0/format-check.py 2024-06-21 17:52:29.000000000 +0200
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+import argparse
+import os
+from pathlib import Path
+import re
+from subprocess import list2cmdline, run
+from tempfile import NamedTemporaryFile
+
+CLANG_FORMAT_VERSION = '18.1.6'
+
+INCLUDE_REGEX = re.compile(
+ r'^(include|source|tests|verification)/.*\.(c|h|inl)$')
+EXCLUDE_REGEX = re.compile(r'^$')
+
+arg_parser = argparse.ArgumentParser(description="Check with clang-format")
+arg_parser.add_argument('-i', '--inplace-edit', action='store_true',
+ help="Edit files inplace")
+args = arg_parser.parse_args()
+
+os.chdir(Path(__file__).parent)
+
+# create file containing list of all files to format
+filepaths_file = NamedTemporaryFile(delete=False)
+for dirpath, dirnames, filenames in os.walk('.'):
+ for filename in filenames:
+ # our regexes expect filepath to use forward slash
+ filepath = Path(dirpath, filename).as_posix()
+ if not INCLUDE_REGEX.match(filepath):
+ continue
+ if EXCLUDE_REGEX.match(filepath):
+ continue
+
+ filepaths_file.write(f"{filepath}\n".encode())
+filepaths_file.close()
+
+# use pipx to run clang-format from PyPI
+# this is a simple way to run the same clang-format version regardless of OS
+cmd = ['pipx', 'run', f'clang-format=={CLANG_FORMAT_VERSION}',
+ f'--files={filepaths_file.name}']
+if args.inplace_edit:
+ cmd += ['-i']
+else:
+ cmd += ['--Werror', '--dry-run']
+
+print(f"{Path.cwd()}$ {list2cmdline(cmd)}")
+if run(cmd).returncode:
+ exit(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/format-check.sh new/aws-c-cal-0.7.0/format-check.sh
--- old/aws-c-cal-0.6.15/format-check.sh 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/format-check.sh 1970-01-01 01:00:00.000000000 +0100
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ -z $CLANG_FORMAT ]] ; then
- CLANG_FORMAT=clang-format
-fi
-
-if NOT type $CLANG_FORMAT 2> /dev/null ; then
- echo "No appropriate clang-format found."
- exit 1
-fi
-
-FAIL=0
-SOURCE_FILES=`find bin source include tests -type f \( -name '*.h' -o -name '*.c' \)`
-for i in $SOURCE_FILES
-do
- $CLANG_FORMAT -output-replacements-xml $i | grep -c "<replacement " > /dev/null
- if [ $? -ne 1 ]
- then
- echo "$i failed clang-format check."
- FAIL=1
- fi
-done
-
-exit $FAIL
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/include/aws/cal/private/symmetric_cipher_priv.h new/aws-c-cal-0.7.0/include/aws/cal/private/symmetric_cipher_priv.h
--- old/aws-c-cal-0.6.15/include/aws/cal/private/symmetric_cipher_priv.h 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/include/aws/cal/private/symmetric_cipher_priv.h 2024-06-21 17:52:29.000000000 +0200
@@ -34,9 +34,9 @@
/**
deprecated for use, only for backwards compat.
Use state to represent current state of cipher.
- good represented if the ciphter was initialized
+ good represented if the cipher was initialized
without any errors, ready to process input,
- and not finialized yet. This corresponds to
+ and not finalized yet. This corresponds to
the state AWS_SYMMETRIC_CIPHER_READY.
*/
bool good;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/include/aws/cal/symmetric_cipher.h new/aws-c-cal-0.7.0/include/aws/cal/symmetric_cipher.h
--- old/aws-c-cal-0.6.15/include/aws/cal/symmetric_cipher.h 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/include/aws/cal/symmetric_cipher.h 2024-06-21 17:52:29.000000000 +0200
@@ -15,25 +15,21 @@
struct aws_symmetric_cipher;
-typedef struct aws_symmetric_cipher *(aws_aes_cbc_256_new_fn)(
- struct aws_allocator *allocator,
- const struct aws_byte_cursor *key,
- const struct aws_byte_cursor *iv);
-
-typedef struct aws_symmetric_cipher *(aws_aes_ctr_256_new_fn)(
- struct aws_allocator *allocator,
- const struct aws_byte_cursor *key,
- const struct aws_byte_cursor *iv);
-
-typedef struct aws_symmetric_cipher *(aws_aes_gcm_256_new_fn)(
- struct aws_allocator *allocator,
- const struct aws_byte_cursor *key,
- const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag);
+typedef struct aws_symmetric_cipher *(aws_aes_cbc_256_new_fn)(struct aws_allocator *allocator,
+ const struct aws_byte_cursor *key,
+ const struct aws_byte_cursor *iv);
+
+typedef struct aws_symmetric_cipher *(aws_aes_ctr_256_new_fn)(struct aws_allocator *allocator,
+ const struct aws_byte_cursor *key,
+ const struct aws_byte_cursor *iv);
+
+typedef struct aws_symmetric_cipher *(aws_aes_gcm_256_new_fn)(struct aws_allocator *allocator,
+ const struct aws_byte_cursor *key,
+ const struct aws_byte_cursor *iv,
+ const struct aws_byte_cursor *aad);
-typedef struct aws_symmetric_cipher *(
- aws_aes_keywrap_256_new_fn)(struct aws_allocator *allocator, const struct aws_byte_cursor *key);
+typedef struct aws_symmetric_cipher *(aws_aes_keywrap_256_new_fn)(struct aws_allocator *allocator,
+ const struct aws_byte_cursor *key);
enum aws_symmetric_cipher_state {
AWS_SYMMETRIC_CIPHER_READY,
@@ -91,15 +87,15 @@
*
* respectively.
*
- * If they are set, that key and iv will be copied internally and used by the cipher.
- *
- * If tag and aad are set they will be copied internally and used by the cipher.
- * decryption_tag would most likely be used for a decrypt operation to detect tampering or corruption.
- * The Tag for the most recent encrypt operation will be available in:
+ * If aad is set it will be copied and applied to the cipher.
*
- * aws_symmetric_cipher_get_tag()
+ * If they are set, that key and iv will be copied internally and used by the cipher.
*
- * If aad is set it will be copied and applied to the cipher.
+ * For decryption purposes tag can be provided via aws_symmetric_cipher_set_tag method.
+ * Note: for decrypt operations, tag must be provided before first decrypt is called.
+ * (this is a windows bcrypt limitations, but for consistency sake same limitation is extended to other platforms)
+ * Tag generated during encryption can be retrieved using aws_symmetric_cipher_get_tag method
+ * after finalize is called.
*
* Returns NULL on failure. You can check aws_last_error() to get the error code indicating the failure cause.
*/
@@ -107,8 +103,7 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag);
+ const struct aws_byte_cursor *aad);
/**
* Creates an instance of AES Keywrap with 256-bit key.
@@ -194,6 +189,12 @@
* Resets the cipher state for starting a new encrypt or decrypt operation. Note encrypt/decrypt cannot be mixed on the
* same cipher without a call to reset in between them. However, this leaves the key, iv etc... materials setup for
* immediate reuse.
+ * Note: GCM tag is not preserved between operations. If you intend to do encrypt followed directly by decrypt, make
+ * sure to make a copy of tag before reseting the cipher and pass that copy for decryption.
+ *
+ * Warning: In most cases it's a really bad idea to reset a cipher and perform another operation using that cipher.
+ * Key and IV should not be reused for different operations. Instead of reseting the cipher, destroy the cipher
+ * and create new one with a new key/iv pair. Use reset at your own risk, and only after careful consideration.
*
* returns AWS_OP_SUCCESS on success. Call aws_last_error() to determine the failure cause if it returns
* AWS_OP_ERR;
@@ -212,6 +213,11 @@
AWS_CAL_API struct aws_byte_cursor aws_symmetric_cipher_get_tag(const struct aws_symmetric_cipher *cipher);
/**
+ * Sets the GMAC tag on the cipher. Does nothing for ciphers that do not support tag.
+ */
+AWS_CAL_API void aws_symmetric_cipher_set_tag(struct aws_symmetric_cipher *cipher, struct aws_byte_cursor tag);
+
+/**
* Gets the original initialization vector as a cursor.
* The memory in this cursor is unsafe as it refers to the internal buffer.
* This was done because the use case doesn't require fetching these during an
@@ -244,7 +250,7 @@
/**
* Retuns the current state of the cipher. Ther state of the cipher can be ready for use, finalized, or has encountered
- * an error. if the cipher is in a finished or eror state, it must be reset before further use.
+ * an error. if the cipher is in a finished or error state, it must be reset before further use.
*/
AWS_CAL_API enum aws_symmetric_cipher_state aws_symmetric_cipher_get_state(const struct aws_symmetric_cipher *cipher);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/cal.c new/aws-c-cal-0.7.0/source/cal.c
--- old/aws-c-cal-0.6.15/source/cal.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/cal.c 2024-06-21 17:52:29.000000000 +0200
@@ -6,7 +6,7 @@
#include <aws/common/common.h>
#include <aws/common/error.h>
-#define AWS_DEFINE_ERROR_INFO_CAL(CODE, STR) [(CODE)-0x1C00] = AWS_DEFINE_ERROR_INFO(CODE, STR, "aws-c-cal")
+#define AWS_DEFINE_ERROR_INFO_CAL(CODE, STR) [(CODE) - 0x1C00] = AWS_DEFINE_ERROR_INFO(CODE, STR, "aws-c-cal")
static struct aws_error_info s_errors[] = {
AWS_DEFINE_ERROR_INFO_CAL(AWS_ERROR_CAL_SIGNATURE_VALIDATION_FAILED, "Verify on a cryptographic signature failed."),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/darwin/commoncrypto_aes.c new/aws-c-cal-0.7.0/source/darwin/commoncrypto_aes.c
--- old/aws-c-cal-0.6.15/source/darwin/commoncrypto_aes.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/darwin/commoncrypto_aes.c 2024-06-21 17:52:29.000000000 +0200
@@ -360,6 +360,14 @@
return &cc_cipher->cipher_base;
}
+static int s_gcm_decrypt(struct aws_symmetric_cipher *cipher, struct aws_byte_cursor input, struct aws_byte_buf *out) {
+ if (cipher->tag.buffer == NULL) {
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
+ }
+
+ return s_decrypt(cipher, input, out);
+}
+
#ifdef SUPPORT_AES_GCM_VIA_SPI
/*
@@ -428,7 +436,7 @@
struct cc_aes_cipher *cc_cipher = cipher->impl;
size_t tag_length = AWS_AES_256_CIPHER_BLOCK_SIZE;
- CCStatus status = s_cc_crypto_gcm_finalize(cc_cipher->encryptor_handle, cipher->tag.buffer, tag_length);
+ CCStatus status = s_cc_crypto_gcm_finalize(cc_cipher->decryptor_handle, cipher->tag.buffer, tag_length);
if (status != kCCSuccess) {
cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
@@ -441,8 +449,7 @@
struct cc_aes_cipher *cc_cipher,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *tag) {
+ const struct aws_byte_cursor *aad) {
if (!cc_cipher->cipher_base.key.len) {
if (key) {
aws_byte_buf_init_copy_from_cursor(&cc_cipher->cipher_base.key, cc_cipher->cipher_base.allocator, *key);
@@ -471,10 +478,6 @@
aws_byte_buf_init_copy_from_cursor(&cc_cipher->cipher_base.aad, cc_cipher->cipher_base.allocator, *aad);
}
- if (tag && tag->len) {
- aws_byte_buf_init_copy_from_cursor(&cc_cipher->cipher_base.tag, cc_cipher->cipher_base.allocator, *tag);
- }
-
CCCryptorStatus status = CCCryptorCreateWithMode(
kCCEncrypt,
kCCModeGCM,
@@ -548,9 +551,10 @@
struct cc_aes_cipher *cc_cipher = cipher->impl;
int ret_val = s_reset(cipher);
+ aws_byte_buf_clean_up_secure(&cc_cipher->cipher_base.tag);
if (ret_val == AWS_OP_SUCCESS) {
- ret_val = s_initialize_gcm_cipher_materials(cc_cipher, NULL, NULL, NULL, NULL);
+ ret_val = s_initialize_gcm_cipher_materials(cc_cipher, NULL, NULL, NULL);
}
return ret_val;
@@ -559,7 +563,7 @@
static struct aws_symmetric_cipher_vtable s_aes_gcm_vtable = {
.finalize_decryption = s_finalize_gcm_decryption,
.finalize_encryption = s_finalize_gcm_encryption,
- .decrypt = s_decrypt,
+ .decrypt = s_gcm_decrypt,
.encrypt = s_encrypt,
.provider = "CommonCrypto",
.alg_name = "AES-GCM 256",
@@ -571,15 +575,14 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *tag) {
+ const struct aws_byte_cursor *aad) {
struct cc_aes_cipher *cc_cipher = aws_mem_calloc(allocator, 1, sizeof(struct cc_aes_cipher));
cc_cipher->cipher_base.allocator = allocator;
cc_cipher->cipher_base.block_size = AWS_AES_256_CIPHER_BLOCK_SIZE;
cc_cipher->cipher_base.impl = cc_cipher;
cc_cipher->cipher_base.vtable = &s_aes_gcm_vtable;
- if (s_initialize_gcm_cipher_materials(cc_cipher, key, iv, aad, tag) != AWS_OP_SUCCESS) {
+ if (s_initialize_gcm_cipher_materials(cc_cipher, key, iv, aad) != AWS_OP_SUCCESS) {
s_destroy(&cc_cipher->cipher_base);
return NULL;
}
@@ -596,14 +599,12 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *tag) {
+ const struct aws_byte_cursor *aad) {
(void)allocator;
(void)key;
(void)iv;
(void)aad;
- (void)tag;
aws_raise_error(AWS_ERROR_PLATFORM_NOT_SUPPORTED);
return NULL;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/ecc.c new/aws-c-cal-0.7.0/source/ecc.c
--- old/aws-c-cal-0.6.15/source/ecc.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/ecc.c 2024-06-21 17:52:29.000000000 +0200
@@ -62,16 +62,14 @@
return AWS_OP_SUCCESS;
}
-typedef struct aws_ecc_key_pair *(aws_ecc_key_pair_new_from_public_key_fn)(
- struct aws_allocator *allocator,
- enum aws_ecc_curve_name curve_name,
- const struct aws_byte_cursor *public_key_x,
- const struct aws_byte_cursor *public_key_y);
+typedef struct aws_ecc_key_pair *(aws_ecc_key_pair_new_from_public_key_fn)(struct aws_allocator *allocator,
+ enum aws_ecc_curve_name curve_name,
+ const struct aws_byte_cursor *public_key_x,
+ const struct aws_byte_cursor *public_key_y);
-typedef struct aws_ecc_key_pair *(aws_ecc_key_pair_new_from_private_key_fn)(
- struct aws_allocator *allocator,
- enum aws_ecc_curve_name curve_name,
- const struct aws_byte_cursor *priv_key);
+typedef struct aws_ecc_key_pair *(aws_ecc_key_pair_new_from_private_key_fn)(struct aws_allocator *allocator,
+ enum aws_ecc_curve_name curve_name,
+ const struct aws_byte_cursor *priv_key);
#ifndef BYO_CRYPTO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/rsa.c new/aws-c-cal-0.7.0/source/rsa.c
--- old/aws-c-cal-0.6.15/source/rsa.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/rsa.c 2024-06-21 17:52:29.000000000 +0200
@@ -8,11 +8,11 @@
#include <aws/cal/hash.h>
#include <aws/cal/private/der.h>
-typedef struct aws_rsa_key_pair *(
- aws_rsa_key_pair_new_from_public_pkcs1_fn)(struct aws_allocator *allocator, struct aws_byte_cursor public_key);
+typedef struct aws_rsa_key_pair *(aws_rsa_key_pair_new_from_public_pkcs1_fn)(struct aws_allocator *allocator,
+ struct aws_byte_cursor public_key);
-typedef struct aws_rsa_key_pair *(
- aws_rsa_key_pair_new_from_private_pkcs1_fn)(struct aws_allocator *allocator, struct aws_byte_cursor private_key);
+typedef struct aws_rsa_key_pair *(aws_rsa_key_pair_new_from_private_pkcs1_fn)(struct aws_allocator *allocator,
+ struct aws_byte_cursor private_key);
#ifndef BYO_CRYPTO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/symmetric_cipher.c new/aws-c-cal-0.7.0/source/symmetric_cipher.c
--- old/aws-c-cal-0.6.15/source/symmetric_cipher.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/symmetric_cipher.c 2024-06-21 17:52:29.000000000 +0200
@@ -22,8 +22,7 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag);
+ const struct aws_byte_cursor *aad);
extern struct aws_symmetric_cipher *aws_aes_keywrap_256_new_impl(
struct aws_allocator *allocator,
@@ -54,13 +53,11 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag) {
+ const struct aws_byte_cursor *aad) {
(void)allocator;
(void)key;
(void)iv;
(void)aad;
- (void)decryption_tag;
abort();
}
@@ -127,13 +124,12 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag) {
+ const struct aws_byte_cursor *aad) {
if (s_validate_key_materials(key, AWS_AES_256_KEY_BYTE_LEN, iv, AWS_AES_256_CIPHER_BLOCK_SIZE - sizeof(uint32_t)) !=
AWS_OP_SUCCESS) {
return NULL;
}
- return s_aes_gcm_new_fn(allocator, key, iv, aad, decryption_tag);
+ return s_aes_gcm_new_fn(allocator, key, iv, aad);
}
struct aws_symmetric_cipher *aws_aes_keywrap_256_new(
@@ -223,6 +219,12 @@
return aws_byte_cursor_from_buf(&cipher->tag);
}
+void aws_symmetric_cipher_set_tag(struct aws_symmetric_cipher *cipher, struct aws_byte_cursor tag) {
+ AWS_PRECONDITION(aws_byte_cursor_is_valid(&tag));
+ aws_byte_buf_clean_up_secure(&cipher->tag);
+ aws_byte_buf_init_copy_from_cursor(&cipher->tag, cipher->allocator, tag);
+}
+
struct aws_byte_cursor aws_symmetric_cipher_get_initialization_vector(const struct aws_symmetric_cipher *cipher) {
return aws_byte_cursor_from_buf(&cipher->iv);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/unix/openssl_aes.c new/aws-c-cal-0.7.0/source/unix/openssl_aes.c
--- old/aws-c-cal-0.6.15/source/unix/openssl_aes.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/unix/openssl_aes.c 2024-06-21 17:52:29.000000000 +0200
@@ -123,9 +123,7 @@
aws_byte_buf_clean_up_secure(&cipher->key);
aws_byte_buf_clean_up_secure(&cipher->iv);
- if (cipher->tag.buffer) {
- aws_byte_buf_clean_up_secure(&cipher->tag);
- }
+ aws_byte_buf_clean_up_secure(&cipher->tag);
if (cipher->aad.buffer) {
aws_byte_buf_clean_up_secure(&cipher->aad);
@@ -326,28 +324,51 @@
return NULL;
}
+static int s_gcm_decrypt(struct aws_symmetric_cipher *cipher, struct aws_byte_cursor input, struct aws_byte_buf *out) {
+ if (cipher->tag.buffer == NULL) {
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
+ }
+
+ return s_decrypt(cipher, input, out);
+}
+
static int s_finalize_gcm_encryption(struct aws_symmetric_cipher *cipher, struct aws_byte_buf *out) {
struct openssl_aes_cipher *openssl_cipher = cipher->impl;
+ if (cipher->tag.buffer == NULL) {
+ aws_byte_buf_init(&cipher->tag, cipher->allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
+ }
+
int ret_val = s_finalize_encryption(cipher, out);
if (ret_val == AWS_OP_SUCCESS) {
- if (!cipher->tag.len) {
- if (!EVP_CIPHER_CTX_ctrl(
- openssl_cipher->encryptor_ctx,
- EVP_CTRL_GCM_GET_TAG,
- (int)cipher->tag.capacity,
- cipher->tag.buffer)) {
- cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
- return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
- }
- cipher->tag.len = AWS_AES_256_CIPHER_BLOCK_SIZE;
+ if (!EVP_CIPHER_CTX_ctrl(
+ openssl_cipher->encryptor_ctx, EVP_CTRL_GCM_GET_TAG, (int)cipher->tag.capacity, cipher->tag.buffer)) {
+ cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
+ cipher->tag.len = AWS_AES_256_CIPHER_BLOCK_SIZE;
}
return ret_val;
}
+static int s_finalize_gcm_decryption(struct aws_symmetric_cipher *cipher, struct aws_byte_buf *out) {
+ struct openssl_aes_cipher *openssl_cipher = cipher->impl;
+
+ if (openssl_cipher->cipher_base.tag.len) {
+ if (!EVP_CIPHER_CTX_ctrl(
+ openssl_cipher->decryptor_ctx,
+ EVP_CTRL_GCM_SET_TAG,
+ (int)openssl_cipher->cipher_base.tag.len,
+ openssl_cipher->cipher_base.tag.buffer)) {
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
+ }
+ }
+
+ return s_finalize_decryption(cipher, out);
+}
+
static int s_init_gcm_cipher_materials(struct aws_symmetric_cipher *cipher) {
struct openssl_aes_cipher *openssl_cipher = cipher->impl;
@@ -388,15 +409,7 @@
}
}
- if (openssl_cipher->cipher_base.tag.len) {
- if (!EVP_CIPHER_CTX_ctrl(
- openssl_cipher->decryptor_ctx,
- EVP_CTRL_GCM_SET_TAG,
- (int)openssl_cipher->cipher_base.tag.len,
- openssl_cipher->cipher_base.tag.buffer)) {
- return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
- }
- }
+ aws_byte_buf_clean_up_secure(&openssl_cipher->cipher_base.tag);
return AWS_OP_SUCCESS;
}
@@ -416,9 +429,9 @@
.provider = "OpenSSL Compatible LibCrypto",
.destroy = s_destroy,
.reset = s_reset_gcm_cipher_materials,
- .decrypt = s_decrypt,
+ .decrypt = s_gcm_decrypt,
.encrypt = s_encrypt,
- .finalize_decryption = s_finalize_decryption,
+ .finalize_decryption = s_finalize_gcm_decryption,
.finalize_encryption = s_finalize_gcm_encryption,
};
@@ -426,8 +439,7 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag) {
+ const struct aws_byte_cursor *aad) {
struct openssl_aes_cipher *cipher = aws_mem_calloc(allocator, 1, sizeof(struct openssl_aes_cipher));
cipher->cipher_base.allocator = allocator;
@@ -465,14 +477,6 @@
aws_byte_buf_init_copy_from_cursor(&cipher->cipher_base.aad, allocator, *aad);
}
- /* Set tag for the decryptor to use.*/
- if (decryption_tag) {
- aws_byte_buf_init_copy_from_cursor(&cipher->cipher_base.tag, allocator, *decryption_tag);
- } else {
- /* we'll need this later when we grab the tag during encryption time. */
- aws_byte_buf_init(&cipher->cipher_base.tag, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
- }
-
/* Initialize the cipher contexts with the specified key and IV. */
if (s_init_gcm_cipher_materials(&cipher->cipher_base)) {
goto error;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/unix/openssl_platform_init.c new/aws-c-cal-0.7.0/source/unix/openssl_platform_init.c
--- old/aws-c-cal-0.6.15/source/unix/openssl_platform_init.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/unix/openssl_platform_init.c 2024-06-21 17:52:29.000000000 +0200
@@ -22,6 +22,10 @@
#define OPENSSL_SUPPRESS_DEPRECATED
#include <openssl/crypto.h>
+#if defined(OPENSSL_IS_AWSLC)
+# include <openssl/service_indicator.h>
+#endif
+
static struct openssl_hmac_ctx_table hmac_ctx_table;
static struct openssl_evp_md_ctx_table evp_md_ctx_table;
@@ -555,6 +559,47 @@
return AWS_LIBCRYPTO_NONE;
}
+/* Validate at runtime that we're linked against the same libcrypto we compiled against. */
+static void s_validate_libcrypto_linkage(void) {
+ /* NOTE: the choice of stack buffer size is somewhat arbitrary. it's
+ * possible, but unlikely, that libcrypto version strings may exceed this in
+ * the future. we guard against buffer overflow by limiting write size in
+ * snprintf with the size of the buffer itself. if libcrypto version strings
+ * do eventually exceed the chosen size, this runtime check will fail and
+ * will need to be addressed by increasing buffer size.*/
+ char expected_version[64] = {0};
+#if defined(OPENSSL_IS_AWSLC)
+ /* get FIPS mode at runtime becuase headers don't give any indication of
+ * AWS-LC's FIPSness at aws-c-cal compile time. version number can still be
+ * captured at preprocess/compile time from AWSLC_VERSION_NUMBER_STRING.*/
+ const char *mode = FIPS_mode() ? "AWS-LC FIPS" : "AWS-LC";
+ snprintf(expected_version, sizeof(expected_version), "%s %s", mode, AWSLC_VERSION_NUMBER_STRING);
+#elif defined(OPENSSL_IS_BORINGSSL)
+ snprintf(expected_version, sizeof(expected_version), "BoringSSL");
+#elif defined(OPENSSL_IS_OPENSSL)
+ snprintf(expected_version, sizeof(expected_version), OPENSSL_VERSION_TEXT);
+#elif !defined(BYO_CRYPTO)
+# error Unsupported libcrypto!
+#endif
+ const char *runtime_version = SSLeay_version(SSLEAY_VERSION);
+ AWS_LOGF_DEBUG(
+ AWS_LS_CAL_LIBCRYPTO_RESOLVE,
+ "Compiled with libcrypto %s, linked to libcrypto %s",
+ expected_version,
+ runtime_version);
+#if defined(OPENSSL_IS_OPENSSL)
+ /* Validate that the string "AWS-LC" doesn't appear in OpenSSL version str. */
+ AWS_FATAL_ASSERT(strstr("AWS-LC", expected_version) == NULL);
+ AWS_FATAL_ASSERT(strstr("AWS-LC", runtime_version) == NULL);
+ /* Validate both expected and runtime versions begin with OpenSSL's version str prefix. */
+ const char *openssl_prefix = "OpenSSL ";
+ AWS_FATAL_ASSERT(strncmp(openssl_prefix, expected_version, strlen(openssl_prefix)) == 0);
+ AWS_FATAL_ASSERT(strncmp(openssl_prefix, runtime_version, strlen(openssl_prefix)) == 0);
+#else
+ AWS_FATAL_ASSERT(strcmp(expected_version, runtime_version) == 0 && "libcrypto mislink");
+#endif
+}
+
static enum aws_libcrypto_version s_resolve_libcrypto(void) {
/* Try to auto-resolve against what's linked in/process space */
AWS_LOGF_DEBUG(AWS_LS_CAL_LIBCRYPTO_RESOLVE, "searching process and loaded modules");
@@ -583,6 +628,8 @@
result = s_resolve_libcrypto_lib();
}
+ s_validate_libcrypto_linkage();
+
return result;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/source/windows/bcrypt_aes.c new/aws-c-cal-0.7.0/source/windows/bcrypt_aes.c
--- old/aws-c-cal-0.6.15/source/windows/bcrypt_aes.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/source/windows/bcrypt_aes.c 2024-06-21 17:52:29.000000000 +0200
@@ -9,8 +9,6 @@
/* keep the space to prevent formatters from reordering this with the Windows.h header. */
#include <bcrypt.h>
-#define NT_SUCCESS(status) ((NTSTATUS)status >= 0)
-
/* handles for AES modes and algorithms we'll be using. These are initialized once and allowed to leak. */
static aws_thread_once s_aes_thread_once = AWS_THREAD_ONCE_STATIC_INIT;
static BCRYPT_ALG_HANDLE s_aes_cbc_algorithm_handle = NULL;
@@ -32,7 +30,7 @@
struct aws_byte_buf overflow;
/* This gets updated as the algorithms run so it isn't the original IV. That's why its separate */
struct aws_byte_buf working_iv;
- /* A buffer to keep around for the GMAC for GCM. */
+ /* A buffer to keep around for the GMAC for GCM. Purely for BCrypt needs, we dont touch it. */
struct aws_byte_buf working_mac_buffer;
};
@@ -50,7 +48,7 @@
(ULONG)(wcslen(BCRYPT_CHAIN_MODE_CBC) + 1),
0);
- AWS_FATAL_ASSERT(NT_SUCCESS(status) && "BCryptSetProperty for CBC chaining mode failed");
+ AWS_FATAL_ASSERT(BCRYPT_SUCCESS(status) && "BCryptSetProperty for CBC chaining mode failed");
/* Set up GCM algorithm */
status = BCryptOpenAlgorithmProvider(&s_aes_gcm_algorithm_handle, BCRYPT_AES_ALGORITHM, NULL, 0);
@@ -63,7 +61,7 @@
(ULONG)(wcslen(BCRYPT_CHAIN_MODE_GCM) + 1),
0);
- AWS_FATAL_ASSERT(NT_SUCCESS(status) && "BCryptSetProperty for GCM chaining mode failed");
+ AWS_FATAL_ASSERT(BCRYPT_SUCCESS(status) && "BCryptSetProperty for GCM chaining mode failed");
/* Setup CTR algorithm */
status = BCryptOpenAlgorithmProvider(&s_aes_ctr_algorithm_handle, BCRYPT_AES_ALGORITHM, NULL, 0);
@@ -78,13 +76,13 @@
(ULONG)(wcslen(BCRYPT_CHAIN_MODE_ECB) + 1),
0);
- AWS_FATAL_ASSERT(NT_SUCCESS(status) && "BCryptSetProperty for ECB chaining mode failed");
+ AWS_FATAL_ASSERT(BCRYPT_SUCCESS(status) && "BCryptSetProperty for ECB chaining mode failed");
/* Setup KEYWRAP algorithm */
status = BCryptOpenAlgorithmProvider(&s_aes_keywrap_algorithm_handle, BCRYPT_AES_ALGORITHM, NULL, 0);
AWS_FATAL_ASSERT(s_aes_ctr_algorithm_handle && "BCryptOpenAlgorithmProvider() failed");
- AWS_FATAL_ASSERT(NT_SUCCESS(status) && "BCryptSetProperty for KeyWrap failed");
+ AWS_FATAL_ASSERT(BCRYPT_SUCCESS(status) && "BCryptSetProperty for KeyWrap failed");
}
static BCRYPT_KEY_HANDLE s_import_key_blob(
@@ -109,7 +107,7 @@
aws_byte_buf_clean_up_secure(&key_data_buf);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
return NULL;
}
@@ -156,7 +154,6 @@
struct aes_bcrypt_cipher *cipher,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *tag,
const struct aws_byte_cursor *aad,
size_t iv_size,
bool is_ctr_mode,
@@ -180,19 +177,10 @@
}
}
+ aws_byte_buf_clean_up_secure(&cipher->cipher.tag);
+
/* these fields are only used in GCM mode. */
if (is_gcm) {
- if (!cipher->cipher.tag.len) {
- if (tag) {
- aws_byte_buf_init_copy_from_cursor(&cipher->cipher.tag, cipher->cipher.allocator, *tag);
- } else {
- aws_byte_buf_init(&cipher->cipher.tag, cipher->cipher.allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
- aws_byte_buf_secure_zero(&cipher->cipher.tag);
- /* windows handles this, just go ahead and tell the API it's got a length. */
- cipher->cipher.tag.len = AWS_AES_256_CIPHER_BLOCK_SIZE;
- }
- }
-
if (!cipher->cipher.aad.len) {
if (aad) {
aws_byte_buf_init_copy_from_cursor(&cipher->cipher.aad, cipher->cipher.allocator, *aad);
@@ -217,7 +205,7 @@
cipher->cipher_flags = 0;
/* In GCM mode, the IV is set on the auth info pointer and a working copy
- is passed to each encryt call. CBC and CTR mode function differently here
+ is passed to each encrypt call. CBC and CTR mode function differently here
and the IV is set on the key itself. */
if (!is_gcm && cipher->cipher.iv.len) {
NTSTATUS status = BCryptSetProperty(
@@ -227,7 +215,7 @@
(ULONG)cipher->cipher.iv.len,
0);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
cipher->cipher.state = AWS_SYMMETRIC_CIPHER_ERROR;
return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
@@ -241,8 +229,8 @@
cipher->auth_info_ptr->pbNonce = cipher->cipher.iv.buffer;
cipher->auth_info_ptr->cbNonce = (ULONG)cipher->cipher.iv.len;
cipher->auth_info_ptr->dwFlags = BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG;
- cipher->auth_info_ptr->pbTag = cipher->cipher.tag.buffer;
- cipher->auth_info_ptr->cbTag = (ULONG)cipher->cipher.tag.len;
+ cipher->auth_info_ptr->pbTag = NULL;
+ cipher->auth_info_ptr->cbTag = 0;
cipher->auth_info_ptr->pbMacContext = cipher->working_mac_buffer.buffer;
cipher->auth_info_ptr->cbMacContext = (ULONG)cipher->working_mac_buffer.len;
@@ -289,8 +277,7 @@
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
s_clear_reusable_components(cipher);
- return s_initialize_cipher_materials(
- cipher_impl, NULL, NULL, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, false, false);
+ return s_initialize_cipher_materials(cipher_impl, NULL, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, false, false);
}
static int s_reset_ctr_cipher(struct aws_symmetric_cipher *cipher) {
@@ -301,16 +288,14 @@
/* reset the working iv back to the original IV. We do this because
we're manually maintaining the counter. */
aws_byte_buf_append_dynamic(&cipher_impl->working_iv, &iv_cur);
- return s_initialize_cipher_materials(
- cipher_impl, NULL, NULL, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, true, false);
+ return s_initialize_cipher_materials(cipher_impl, NULL, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, true, false);
}
static int s_reset_gcm_cipher(struct aws_symmetric_cipher *cipher) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
s_clear_reusable_components(cipher);
- return s_initialize_cipher_materials(
- cipher_impl, NULL, NULL, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE - 4, false, true);
+ return s_initialize_cipher_materials(cipher_impl, NULL, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE - 4, false, true);
}
static int s_aes_default_encrypt(
@@ -319,10 +304,6 @@
struct aws_byte_buf *out) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
- if (to_encrypt->len == 0) {
- return AWS_OP_SUCCESS;
- }
-
size_t predicted_write_length =
cipher_impl->cipher_flags & BCRYPT_BLOCK_PADDING
? to_encrypt->len + (AWS_AES_256_CIPHER_BLOCK_SIZE - (to_encrypt->len % AWS_AES_256_CIPHER_BLOCK_SIZE))
@@ -357,7 +338,7 @@
&length_written,
cipher_impl->cipher_flags);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
@@ -412,7 +393,11 @@
struct aws_byte_buf final_to_encrypt = s_fill_in_overflow(cipher, &to_encrypt);
struct aws_byte_cursor final_cur = aws_byte_cursor_from_buf(&final_to_encrypt);
- int ret_val = s_aes_default_encrypt(cipher, &final_cur, out);
+ int ret_val = AWS_OP_SUCCESS;
+ if (final_cur.len > 0) {
+ ret_val = s_aes_default_encrypt(cipher, &final_cur, out);
+ }
+
aws_byte_buf_clean_up_secure(&final_to_encrypt);
return ret_val;
@@ -440,10 +425,6 @@
struct aws_byte_buf *out) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
- if (to_decrypt->len == 0) {
- return AWS_OP_SUCCESS;
- }
-
PUCHAR iv = NULL;
ULONG iv_size = 0;
@@ -474,7 +455,7 @@
&length_written,
cipher_impl->cipher_flags);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
@@ -489,7 +470,11 @@
struct aws_byte_buf *out) {
struct aws_byte_buf final_to_decrypt = s_fill_in_overflow(cipher, &to_decrypt);
struct aws_byte_cursor final_cur = aws_byte_cursor_from_buf(&final_to_decrypt);
- int ret_val = s_default_aes_decrypt(cipher, &final_cur, out);
+ int ret_val = AWS_OP_SUCCESS;
+ if (final_cur.len > 0) {
+ ret_val = s_default_aes_decrypt(cipher, &final_cur, out);
+ }
+
aws_byte_buf_clean_up_secure(&final_to_decrypt);
return ret_val;
@@ -537,7 +522,7 @@
cipher->alg_handle = s_aes_cbc_algorithm_handle;
cipher->cipher.vtable = &s_aes_cbc_vtable;
- if (s_initialize_cipher_materials(cipher, key, iv, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, false, false) !=
+ if (s_initialize_cipher_materials(cipher, key, iv, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, false, false) !=
AWS_OP_SUCCESS) {
goto error;
}
@@ -555,55 +540,113 @@
return NULL;
}
-/* the buffer management for this mode is a good deal easier because we don't care about padding.
- We do care about keeping the final buffer less than a block size til the finalize call so we can
- turn the auth chaining flag off and compute the GMAC correctly. */
+/*
+ * The buffer management for gcm mode is a good deal easier than ctr and cbc modes because we don't care about padding.
+ * In chained mode, BCrypt expects the data to be passed in in multiples of block size,
+ * followed by a finalize call that turns off chaining and provides any remaining data.
+ * This function takes care of managing this state - you give it data to work and cipher state and
+ * it will return what data can be sent to bcrypt now and as side effect will update the cipher state
+ * with any leftover data.
+ * Note: this function takes a scratch buffer that might be used for to back data returned by the cursor.
+ * It is on caller to cleanup that scratch buffer.
+ */
+static struct aws_byte_cursor s_gcm_get_working_slice(
+ struct aes_bcrypt_cipher *cipher_impl,
+ struct aws_byte_cursor data,
+ struct aws_byte_buf *scratch) {
+ AWS_PRECONDITION(cipher_impl);
+ AWS_PRECONDITION(scratch);
+
+ AWS_ZERO_STRUCT(*scratch);
+
+ struct aws_byte_cursor working_cur;
+ AWS_ZERO_STRUCT(working_cur);
+ /* If there's overflow, prepend it to the working buffer, then append the data */
+ if (cipher_impl->overflow.len) {
+ aws_byte_buf_init(scratch, cipher_impl->cipher.allocator, cipher_impl->overflow.len + data.len);
+ struct aws_byte_cursor overflow_cur = aws_byte_cursor_from_buf(&cipher_impl->overflow);
+ aws_byte_buf_append(scratch, &overflow_cur);
+ aws_byte_buf_reset(&cipher_impl->overflow, true);
+ aws_byte_buf_append(scratch, &data);
+ working_cur = aws_byte_cursor_from_buf(scratch);
+ } else {
+ working_cur = data;
+ }
+
+ struct aws_byte_cursor return_cur;
+ AWS_ZERO_STRUCT(return_cur);
+
+ if (working_cur.len >= AWS_AES_256_CIPHER_BLOCK_SIZE) {
+ size_t seek_to = working_cur.len - (working_cur.len % AWS_AES_256_CIPHER_BLOCK_SIZE);
+ return_cur = aws_byte_cursor_advance(&working_cur, seek_to);
+ aws_byte_buf_append_dynamic(&cipher_impl->overflow, &working_cur);
+
+ } else {
+ aws_byte_buf_append_dynamic(&cipher_impl->overflow, &working_cur);
+ }
+
+ return return_cur;
+}
+
+/*
+ * bcrypt requires pbTag and cbTag initialized before starting chained encrypt or decrypt.
+ * why bcrypt needs it initialized early and every other lib can wait until is a mystery.
+ * following function is a helper to init the state correctly for encrypt (and decrypt has a similar function later).
+ * For encrypt this blows away whatever tag user might have set and ensures that it's at least block size.
+ * Note: gcm supports shorter tags, but bcrypt always generates block sized one
+ * (caller can decide to make them shorter by removing bytes from the end).
+ */
+static void s_gcm_ensure_tag_setup_for_encrypt(struct aws_symmetric_cipher *cipher) {
+ struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
+
+ if (cipher_impl->auth_info_ptr->pbTag == NULL) {
+ if (cipher->tag.buffer == NULL) {
+ aws_byte_buf_init(&cipher->tag, cipher->allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
+ } else {
+ aws_byte_buf_secure_zero(&cipher->tag);
+ aws_byte_buf_reserve(&cipher->tag, AWS_AES_256_CIPHER_BLOCK_SIZE);
+ }
+ cipher_impl->auth_info_ptr->pbTag = cipher->tag.buffer;
+ cipher_impl->auth_info_ptr->cbTag = (ULONG)cipher->tag.capacity;
+ /* bcrypt will either end up filling full tag buffer or in an error state,
+ /* in which tag will not be correct */
+ cipher->tag.len = AWS_AES_256_CIPHER_BLOCK_SIZE;
+ }
+}
+
static int s_aes_gcm_encrypt(
struct aws_symmetric_cipher *cipher,
struct aws_byte_cursor to_encrypt,
struct aws_byte_buf *out) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
- if (to_encrypt.len == 0) {
- return AWS_OP_SUCCESS;
- }
+ s_gcm_ensure_tag_setup_for_encrypt(cipher);
struct aws_byte_buf working_buffer;
- AWS_ZERO_STRUCT(working_buffer);
-
- /* If there's overflow, prepend it to the working buffer, then append the data to encrypt */
- if (cipher_impl->overflow.len) {
- struct aws_byte_cursor overflow_cur = aws_byte_cursor_from_buf(&cipher_impl->overflow);
+ struct aws_byte_cursor working_cur = s_gcm_get_working_slice(cipher_impl, to_encrypt, &working_buffer);
- aws_byte_buf_init_copy_from_cursor(&working_buffer, cipher->allocator, overflow_cur);
- aws_byte_buf_reset(&cipher_impl->overflow, true);
- aws_byte_buf_append_dynamic(&working_buffer, &to_encrypt);
- } else {
- aws_byte_buf_init_copy_from_cursor(&working_buffer, cipher->allocator, to_encrypt);
+ int ret_val = AWS_OP_SUCCESS;
+ if (working_cur.len > 0) {
+ ret_val = s_aes_default_encrypt(cipher, &working_cur, out);
}
- int ret_val = AWS_OP_ERR;
+ aws_byte_buf_clean_up_secure(&working_buffer);
+ return ret_val;
+}
- /* whatever is remaining in an incomplete block, copy it to the overflow. If we don't have a full block
- wait til next time or for the finalize call. */
- if (working_buffer.len > AWS_AES_256_CIPHER_BLOCK_SIZE) {
- size_t offset = working_buffer.len % AWS_AES_256_CIPHER_BLOCK_SIZE;
- size_t seek_to = working_buffer.len - (AWS_AES_256_CIPHER_BLOCK_SIZE + offset);
- struct aws_byte_cursor working_buf_cur = aws_byte_cursor_from_buf(&working_buffer);
- struct aws_byte_cursor working_slice = aws_byte_cursor_advance(&working_buf_cur, seek_to);
- /* this is just here to make it obvious. The previous line advanced working_buf_cur to where the
- new overfloew should be. */
- struct aws_byte_cursor new_overflow_cur = working_buf_cur;
- aws_byte_buf_append_dynamic(&cipher_impl->overflow, &new_overflow_cur);
+static int s_gcm_ensure_tag_setup_for_decrypt(struct aws_symmetric_cipher *cipher) {
+ struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
- ret_val = s_aes_default_encrypt(cipher, &working_slice, out);
- } else {
- struct aws_byte_cursor working_buffer_cur = aws_byte_cursor_from_buf(&working_buffer);
- aws_byte_buf_append_dynamic(&cipher_impl->overflow, &working_buffer_cur);
- ret_val = AWS_OP_SUCCESS;
+ if (cipher->tag.buffer == NULL) {
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
- aws_byte_buf_clean_up_secure(&working_buffer);
- return ret_val;
+
+ if (cipher_impl->auth_info_ptr->pbTag == NULL) {
+ cipher_impl->auth_info_ptr->pbTag = cipher->tag.buffer;
+ cipher_impl->auth_info_ptr->cbTag = (ULONG)cipher->tag.len;
+ }
+
+ return AWS_OP_SUCCESS;
}
static int s_aes_gcm_decrypt(
@@ -612,44 +655,18 @@
struct aws_byte_buf *out) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
- if (to_decrypt.len == 0) {
- return AWS_OP_SUCCESS;
+ if (s_gcm_ensure_tag_setup_for_decrypt(cipher)) {
+ return AWS_OP_ERR;
}
struct aws_byte_buf working_buffer;
- AWS_ZERO_STRUCT(working_buffer);
+ struct aws_byte_cursor working_cur = s_gcm_get_working_slice(cipher_impl, to_decrypt, &working_buffer);
- /* If there's overflow, prepend it to the working buffer, then append the data to encrypt */
- if (cipher_impl->overflow.len) {
- struct aws_byte_cursor overflow_cur = aws_byte_cursor_from_buf(&cipher_impl->overflow);
-
- aws_byte_buf_init_copy_from_cursor(&working_buffer, cipher->allocator, overflow_cur);
- aws_byte_buf_reset(&cipher_impl->overflow, true);
- aws_byte_buf_append_dynamic(&working_buffer, &to_decrypt);
- } else {
- aws_byte_buf_init_copy_from_cursor(&working_buffer, cipher->allocator, to_decrypt);
+ int ret_val = AWS_OP_SUCCESS;
+ if (working_cur.len > 0) {
+ ret_val = s_default_aes_decrypt(cipher, &working_cur, out);
}
- int ret_val = AWS_OP_ERR;
-
- /* whatever is remaining in an incomplete block, copy it to the overflow. If we don't have a full block
- wait til next time or for the finalize call. */
- if (working_buffer.len > AWS_AES_256_CIPHER_BLOCK_SIZE) {
- size_t offset = working_buffer.len % AWS_AES_256_CIPHER_BLOCK_SIZE;
- size_t seek_to = working_buffer.len - (AWS_AES_256_CIPHER_BLOCK_SIZE + offset);
- struct aws_byte_cursor working_buf_cur = aws_byte_cursor_from_buf(&working_buffer);
- struct aws_byte_cursor working_slice = aws_byte_cursor_advance(&working_buf_cur, seek_to);
- /* this is just here to make it obvious. The previous line advanced working_buf_cur to where the
- new overfloew should be. */
- struct aws_byte_cursor new_overflow_cur = working_buf_cur;
- aws_byte_buf_append_dynamic(&cipher_impl->overflow, &new_overflow_cur);
-
- ret_val = s_default_aes_decrypt(cipher, &working_slice, out);
- } else {
- struct aws_byte_cursor working_buffer_cur = aws_byte_cursor_from_buf(&working_buffer);
- aws_byte_buf_append_dynamic(&cipher_impl->overflow, &working_buffer_cur);
- ret_val = AWS_OP_SUCCESS;
- }
aws_byte_buf_clean_up_secure(&working_buffer);
return ret_val;
}
@@ -657,10 +674,14 @@
static int s_aes_gcm_finalize_encryption(struct aws_symmetric_cipher *cipher, struct aws_byte_buf *out) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
+ s_gcm_ensure_tag_setup_for_encrypt(cipher);
+
cipher_impl->auth_info_ptr->dwFlags &= ~BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG;
+
/* take whatever is remaining, make the final encrypt call with the auth chain flag turned off. */
struct aws_byte_cursor remaining_cur = aws_byte_cursor_from_buf(&cipher_impl->overflow);
int ret_val = s_aes_default_encrypt(cipher, &remaining_cur, out);
+
aws_byte_buf_secure_zero(&cipher_impl->overflow);
aws_byte_buf_secure_zero(&cipher_impl->working_iv);
return ret_val;
@@ -668,7 +689,13 @@
static int s_aes_gcm_finalize_decryption(struct aws_symmetric_cipher *cipher, struct aws_byte_buf *out) {
struct aes_bcrypt_cipher *cipher_impl = cipher->impl;
+
+ if (s_gcm_ensure_tag_setup_for_decrypt(cipher)) {
+ return AWS_OP_ERR;
+ }
+
cipher_impl->auth_info_ptr->dwFlags &= ~BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG;
+
/* take whatever is remaining, make the final decrypt call with the auth chain flag turned off. */
struct aws_byte_cursor remaining_cur = aws_byte_cursor_from_buf(&cipher_impl->overflow);
int ret_val = s_default_aes_decrypt(cipher, &remaining_cur, out);
@@ -692,8 +719,7 @@
struct aws_allocator *allocator,
const struct aws_byte_cursor *key,
const struct aws_byte_cursor *iv,
- const struct aws_byte_cursor *aad,
- const struct aws_byte_cursor *decryption_tag) {
+ const struct aws_byte_cursor *aad) {
aws_thread_call_once(&s_aes_thread_once, s_load_alg_handles, NULL);
struct aes_bcrypt_cipher *cipher = aws_mem_calloc(allocator, 1, sizeof(struct aes_bcrypt_cipher));
@@ -705,8 +731,8 @@
cipher->cipher.vtable = &s_aes_gcm_vtable;
/* GCM does the counting under the hood, so we let it handle the final 4 bytes of the IV. */
- if (s_initialize_cipher_materials(
- cipher, key, iv, decryption_tag, aad, AWS_AES_256_CIPHER_BLOCK_SIZE - 4, false, true) != AWS_OP_SUCCESS) {
+ if (s_initialize_cipher_materials(cipher, key, iv, aad, AWS_AES_256_CIPHER_BLOCK_SIZE - 4, false, true) !=
+ AWS_OP_SUCCESS) {
goto error;
}
@@ -830,7 +856,7 @@
&lengthWritten,
cipher_impl->cipher_flags);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
ret_val = aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
goto clean_up;
@@ -913,7 +939,7 @@
cipher->alg_handle = s_aes_ctr_algorithm_handle;
cipher->cipher.vtable = &s_aes_ctr_vtable;
- if (s_initialize_cipher_materials(cipher, key, iv, NULL, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, true, false) !=
+ if (s_initialize_cipher_materials(cipher, key, iv, NULL, AWS_AES_256_CIPHER_BLOCK_SIZE, true, false) !=
AWS_OP_SUCCESS) {
goto error;
}
@@ -963,7 +989,7 @@
status = BCryptExportKey(
key_handle_to_encrypt, cipher_impl->key_handle, BCRYPT_AES_WRAP_KEY_BLOB, NULL, 0, &output_size, 0);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
return aws_raise_error(AWS_ERROR_INVALID_STATE);
}
@@ -985,7 +1011,7 @@
&len_written,
0);
- if (!NT_SUCCESS(status)) {
+ if (!BCRYPT_SUCCESS(status)) {
cipher->state = AWS_SYMMETRIC_CIPHER_ERROR;
goto clean_up;
}
@@ -1022,7 +1048,7 @@
0);
int ret_val = AWS_OP_ERR;
- if (NT_SUCCESS(status) && import_key) {
+ if (BCRYPT_SUCCESS(status) && import_key) {
ULONG export_size = 0;
struct aws_byte_buf key_data_blob;
@@ -1041,7 +1067,7 @@
key_data_blob.len += export_size;
- if (NT_SUCCESS(status)) {
+ if (BCRYPT_SUCCESS(status)) {
if (aws_symmetric_cipher_try_ensure_sufficient_buffer_space(out, export_size)) {
goto clean_up;
@@ -1052,7 +1078,7 @@
AWS_FATAL_ASSERT(
aws_byte_buf_write(
out, key_data_blob.buffer + sizeof(BCRYPT_KEY_DATA_BLOB_HEADER), stream_header->cbKeyData) &&
- "Copying key data failed but the allocation should have already occured successfully");
+ "Copying key data failed but the allocation should have already occurred successfully");
ret_val = AWS_OP_SUCCESS;
} else {
@@ -1077,7 +1103,7 @@
s_clear_reusable_components(cipher);
- return s_initialize_cipher_materials(cipher_impl, NULL, NULL, NULL, NULL, 0, false, false);
+ return s_initialize_cipher_materials(cipher_impl, NULL, NULL, NULL, 0, false, false);
}
static struct aws_symmetric_cipher_vtable s_aes_keywrap_vtable = {
@@ -1104,7 +1130,7 @@
cipher->alg_handle = s_aes_keywrap_algorithm_handle;
cipher->cipher.vtable = &s_aes_keywrap_vtable;
- if (s_initialize_cipher_materials(cipher, key, NULL, NULL, NULL, 0, false, false) != AWS_OP_SUCCESS) {
+ if (s_initialize_cipher_materials(cipher, key, NULL, NULL, 0, false, false) != AWS_OP_SUCCESS) {
goto error;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/tests/CMakeLists.txt new/aws-c-cal-0.7.0/tests/CMakeLists.txt
--- old/aws-c-cal-0.6.15/tests/CMakeLists.txt 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/tests/CMakeLists.txt 2024-06-21 17:52:29.000000000 +0200
@@ -117,6 +117,9 @@
add_test_case(aes_keywrap_validate_materials_fails)
add_test_case(aes_test_input_too_large)
add_test_case(aes_test_encrypt_empty_input)
+add_test_case(aes_test_empty_input_gcm_tag_corner_cases)
+add_test_case(aes_test_gcm_tag_corner_cases)
+add_test_case(aes_test_gcm_tag_large_input_corner_cases)
add_test_case(der_encode_integer)
add_test_case(der_encode_integer_zero)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-cal-0.6.15/tests/aes256_test.c new/aws-c-cal-0.7.0/tests/aes256_test.c
--- old/aws-c-cal-0.6.15/tests/aes256_test.c 2024-05-09 17:57:57.000000000 +0200
+++ new/aws-c-cal-0.7.0/tests/aes256_test.c 2024-06-21 17:52:29.000000000 +0200
@@ -253,9 +253,9 @@
ASSERT_SUCCESS(aws_symmetric_cipher_reset(cipher));
struct aws_byte_buf decrypted_buf;
aws_byte_buf_init(&decrypted_buf, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
- struct aws_byte_cursor encryted_cur = aws_byte_cursor_from_buf(&encrypted_buf);
+ struct aws_byte_cursor encrypted_cur = aws_byte_cursor_from_buf(&encrypted_buf);
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_READY, aws_symmetric_cipher_get_state(cipher));
- ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, encryted_cur, &decrypted_buf));
+ ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, encrypted_cur, &decrypted_buf));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_READY, aws_symmetric_cipher_get_state(cipher));
ASSERT_SUCCESS(aws_symmetric_cipher_finalize_decryption(cipher, &decrypted_buf));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_FINALIZED, aws_symmetric_cipher_get_state(cipher));
@@ -498,11 +498,11 @@
struct aws_byte_buf decrypted_buf;
aws_byte_buf_init(&decrypted_buf, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
- struct aws_byte_cursor encryted_cur = aws_byte_cursor_from_buf(&encrypted_buf);
+ struct aws_byte_cursor encrypted_cur = aws_byte_cursor_from_buf(&encrypted_buf);
ASSERT_SUCCESS(aws_symmetric_cipher_reset(cipher));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_READY, aws_symmetric_cipher_get_state(cipher));
- ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, encryted_cur, &decrypted_buf));
+ ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, encrypted_cur, &decrypted_buf));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_READY, aws_symmetric_cipher_get_state(cipher));
ASSERT_SUCCESS(aws_symmetric_cipher_finalize_decryption(cipher, &decrypted_buf));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_FINALIZED, aws_symmetric_cipher_get_state(cipher));
@@ -560,7 +560,7 @@
const struct aws_byte_cursor expected,
const struct aws_byte_cursor tag,
const struct aws_byte_cursor *aad) {
- struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, &key, &iv, aad, &tag);
+ struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, &key, &iv, aad);
ASSERT_NOT_NULL(cipher);
struct aws_byte_buf encrypted_buf;
@@ -569,6 +569,7 @@
/* slice on a weird boundary to hit boundary conditions. */
while (data_cpy.len) {
struct aws_byte_cursor to_encrypt = aws_byte_cursor_advance(&data_cpy, (size_t)aws_min_i64(24, data_cpy.len));
+ AWS_LOGF_DEBUG(0, "to encrypt test size %zu", to_encrypt.len);
ASSERT_SUCCESS(aws_symmetric_cipher_encrypt(cipher, to_encrypt, &encrypted_buf));
}
ASSERT_SUCCESS(aws_symmetric_cipher_finalize_encryption(cipher, &encrypted_buf));
@@ -584,6 +585,8 @@
ASSERT_SUCCESS(aws_symmetric_cipher_reset(cipher));
+ aws_symmetric_cipher_set_tag(cipher, tag);
+
/* slice on a weird boundary to hit boundary conditions. */
while (encrypted_cur.len) {
struct aws_byte_cursor to_decrypt =
@@ -1077,7 +1080,7 @@
static int s_aes_gcm_test_with_generated_key_iv_fn(struct aws_allocator *allocator, void *ctx) {
(void)ctx;
- struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, NULL, NULL, NULL, NULL);
+ struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, NULL, NULL, NULL);
ASSERT_NOT_NULL(cipher);
struct aws_byte_buf encrypted_buf;
@@ -1087,19 +1090,25 @@
ASSERT_SUCCESS(aws_symmetric_cipher_encrypt(cipher, input, &encrypted_buf));
ASSERT_SUCCESS(aws_symmetric_cipher_finalize_encryption(cipher, &encrypted_buf));
+ struct aws_byte_buf encryption_tag;
+ aws_byte_buf_init_copy_from_cursor(&encryption_tag, allocator, aws_symmetric_cipher_get_tag(cipher));
+
ASSERT_SUCCESS(aws_symmetric_cipher_reset(cipher));
+ aws_symmetric_cipher_set_tag(cipher, aws_byte_cursor_from_buf(&encryption_tag));
+
struct aws_byte_buf decrypted_buf;
aws_byte_buf_init(&decrypted_buf, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
- struct aws_byte_cursor encryted_cur = aws_byte_cursor_from_buf(&encrypted_buf);
+ struct aws_byte_cursor encrypted_cur = aws_byte_cursor_from_buf(&encrypted_buf);
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_READY, aws_symmetric_cipher_get_state(cipher));
- ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, encryted_cur, &decrypted_buf));
+ ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, encrypted_cur, &decrypted_buf));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_READY, aws_symmetric_cipher_get_state(cipher));
ASSERT_SUCCESS(aws_symmetric_cipher_finalize_decryption(cipher, &decrypted_buf));
ASSERT_INT_EQUALS(AWS_SYMMETRIC_CIPHER_FINALIZED, aws_symmetric_cipher_get_state(cipher));
ASSERT_BIN_ARRAYS_EQUALS(input.ptr, input.len, decrypted_buf.buffer, decrypted_buf.len);
+ aws_byte_buf_clean_up(&encryption_tag);
aws_byte_buf_clean_up(&decrypted_buf);
aws_byte_buf_clean_up(&encrypted_buf);
aws_symmetric_cipher_destroy(cipher);
@@ -1121,22 +1130,22 @@
struct aws_byte_cursor key = aws_byte_cursor_from_array(valid_key_size, sizeof(valid_key_size));
struct aws_byte_cursor iv = aws_byte_cursor_from_array(iv_too_small, sizeof(iv_too_small));
- ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL, NULL));
+ ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL));
ASSERT_UINT_EQUALS(AWS_ERROR_CAL_INVALID_CIPHER_MATERIAL_SIZE_FOR_ALGORITHM, aws_last_error());
key = aws_byte_cursor_from_array(valid_key_size, sizeof(valid_key_size));
iv = aws_byte_cursor_from_array(iv_too_large, sizeof(iv_too_large));
- ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL, NULL));
+ ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL));
ASSERT_UINT_EQUALS(AWS_ERROR_CAL_INVALID_CIPHER_MATERIAL_SIZE_FOR_ALGORITHM, aws_last_error());
key = aws_byte_cursor_from_array(key_too_small, sizeof(key_too_small));
iv = aws_byte_cursor_from_array(valid_iv_size, sizeof(valid_iv_size));
- ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL, NULL));
+ ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL));
ASSERT_UINT_EQUALS(AWS_ERROR_CAL_INVALID_KEY_LENGTH_FOR_ALGORITHM, aws_last_error());
key = aws_byte_cursor_from_array(key_too_small, sizeof(key_too_small));
iv = aws_byte_cursor_from_array(key_too_large, sizeof(key_too_large));
- ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL, NULL));
+ ASSERT_NULL(aws_aes_gcm_256_new(allocator, &key, &iv, NULL));
ASSERT_UINT_EQUALS(AWS_ERROR_CAL_INVALID_KEY_LENGTH_FOR_ALGORITHM, aws_last_error());
return AWS_OP_SUCCESS;
@@ -1514,7 +1523,7 @@
struct aws_byte_cursor iv_cur = aws_byte_cursor_from_array(iv, sizeof(iv));
struct aws_byte_cursor aad_cur = aws_byte_cursor_from_array(aad, sizeof(aad));
- struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, &key_cur, &iv_cur, &aad_cur, NULL);
+ struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, &key_cur, &iv_cur, &aad_cur);
// encrypt
struct aws_byte_cursor data_cur = {0};
@@ -1527,13 +1536,20 @@
ASSERT_INT_EQUALS(0, encrypt_buf.len);
+ struct aws_byte_buf encryption_tag;
+ aws_byte_buf_init_copy_from_cursor(&encryption_tag, allocator, aws_symmetric_cipher_get_tag(cipher));
+
aws_symmetric_cipher_reset(cipher);
+
+ aws_symmetric_cipher_set_tag(cipher, aws_byte_cursor_from_buf(&encryption_tag));
+
struct aws_byte_buf decrypted_buf = {0};
aws_byte_buf_init(&decrypted_buf, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
struct aws_byte_cursor ciphertext_cur = aws_byte_cursor_from_buf(&encrypt_buf);
ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, ciphertext_cur, &decrypted_buf));
ASSERT_SUCCESS(aws_symmetric_cipher_finalize_decryption(cipher, &decrypted_buf));
+ aws_byte_buf_clean_up(&encryption_tag);
aws_byte_buf_clean_up(&encrypt_buf);
aws_byte_buf_clean_up(&decrypted_buf);
aws_symmetric_cipher_destroy(cipher);
@@ -1541,3 +1557,159 @@
return AWS_OP_SUCCESS;
}
AWS_TEST_CASE(aes_test_encrypt_empty_input, s_aes_test_encrypt_empty_input)
+
+static int s_aes_gcm_corner_case_checker(
+ struct aws_allocator *allocator,
+ struct aws_byte_cursor key_cur,
+ struct aws_byte_cursor iv_cur,
+ struct aws_byte_cursor aad_cur,
+ struct aws_byte_cursor data_cur,
+ struct aws_byte_cursor expected_tag_cur) {
+
+ /* just a random tag value which should not match anything*/
+ uint8_t wrong_tag[] = {
+ 0x83, 0xC0, 0xE4, 0x2B, 0xB1, 0x95, 0xE2, 0x62, 0xCB, 0x3B, 0x3A, 0x74, 0xA0, 0xDA, 0xE1, 0xC8};
+ struct aws_byte_cursor wrong_tag_cur = aws_byte_cursor_from_array(wrong_tag, sizeof(wrong_tag));
+
+ struct aws_symmetric_cipher *cipher = aws_aes_gcm_256_new(allocator, &key_cur, &iv_cur, &aad_cur);
+
+ struct aws_byte_cursor tag = aws_symmetric_cipher_get_tag(cipher);
+
+ ASSERT_TRUE(tag.len == 0 && tag.ptr == NULL);
+
+ aws_symmetric_cipher_set_tag(cipher, wrong_tag_cur);
+
+ // encrypt
+ struct aws_byte_buf encrypt_buf = {0};
+ aws_byte_buf_init(&encrypt_buf, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE * 2);
+ ASSERT_SUCCESS(aws_symmetric_cipher_encrypt(cipher, data_cur, &encrypt_buf));
+
+ // finalize
+ ASSERT_SUCCESS(aws_symmetric_cipher_finalize_encryption(cipher, &encrypt_buf));
+
+ if (data_cur.len == 0) {
+ ASSERT_INT_EQUALS(0, encrypt_buf.len);
+ } else {
+ ASSERT_TRUE(encrypt_buf.len > 0);
+ }
+
+ struct aws_byte_cursor encryption_tag = aws_symmetric_cipher_get_tag(cipher);
+
+ ASSERT_BIN_ARRAYS_EQUALS(expected_tag_cur.ptr, expected_tag_cur.len, encryption_tag.ptr, encryption_tag.len);
+
+ /* reset and verify decrypt works */
+ aws_symmetric_cipher_reset(cipher);
+ tag = aws_symmetric_cipher_get_tag(cipher);
+
+ ASSERT_TRUE(tag.len == 0 && tag.ptr == NULL);
+
+ aws_symmetric_cipher_set_tag(cipher, expected_tag_cur);
+
+ struct aws_byte_buf decrypted_buf = {0};
+ aws_byte_buf_init(&decrypted_buf, allocator, AWS_AES_256_CIPHER_BLOCK_SIZE);
+ struct aws_byte_cursor ciphertext_cur = aws_byte_cursor_from_buf(&encrypt_buf);
+ ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, ciphertext_cur, &decrypted_buf));
+ ASSERT_SUCCESS(aws_symmetric_cipher_finalize_decryption(cipher, &decrypted_buf));
+
+ /* reset and verify decrypt with wrong tag fails */
+ aws_symmetric_cipher_reset(cipher);
+ aws_byte_buf_reset(&decrypted_buf, true);
+ aws_symmetric_cipher_set_tag(cipher, wrong_tag_cur);
+ ciphertext_cur = aws_byte_cursor_from_buf(&encrypt_buf);
+ ASSERT_SUCCESS(aws_symmetric_cipher_decrypt(cipher, ciphertext_cur, &decrypted_buf));
+ ASSERT_ERROR(AWS_ERROR_INVALID_ARGUMENT, aws_symmetric_cipher_finalize_decryption(cipher, &decrypted_buf));
+
+ /* reset and verify decrypt with no tag fails */
+ aws_symmetric_cipher_reset(cipher);
+ aws_byte_buf_reset(&decrypted_buf, true);
+ ciphertext_cur = aws_byte_cursor_from_buf(&encrypt_buf);
+ ASSERT_ERROR(AWS_ERROR_INVALID_ARGUMENT, aws_symmetric_cipher_decrypt(cipher, ciphertext_cur, &decrypted_buf));
+
+ aws_byte_buf_clean_up(&encrypt_buf);
+ aws_byte_buf_clean_up(&decrypted_buf);
+ aws_symmetric_cipher_destroy(cipher);
+ return AWS_OP_SUCCESS;
+}
+
+static int s_aes_test_empty_input_gcm_tag_corner_cases(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ uint8_t iv[] = {0xFB, 0x7B, 0x4A, 0x82, 0x4E, 0x82, 0xDA, 0xA6, 0xC8, 0xBC, 0x12, 0x51};
+
+ uint8_t key[] = {0x20, 0x14, 0x2E, 0x89, 0x8C, 0xD2, 0xFD, 0x98, 0x0F, 0xBF, 0x34, 0xDE, 0x6B, 0xC8, 0x5C, 0x14,
+ 0xDA, 0x7D, 0x57, 0xBD, 0x28, 0xF4, 0xAA, 0x5C, 0xF1, 0x72, 0x8A, 0xB6, 0x4E, 0x84, 0x31, 0x42};
+
+ uint8_t aad[] = {0x16, 0x7B, 0x5C, 0x22, 0x61, 0x77, 0x73, 0x3A, 0x78, 0x2D, 0x61, 0x6D, 0x7A, 0x2D, 0x63, 0x65,
+ 0x6B, 0x2D, 0x61, 0x6C, 0x67, 0x5C, 0x22, 0x3A, 0x20, 0x5C, 0x22, 0x41, 0x45, 0x53, 0x2F, 0x47,
+ 0x43, 0x4D, 0x2F, 0x4E, 0x6F, 0x50, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x5C, 0x22, 0x7D};
+
+ uint8_t expected_tag[] = {
+ 0x81, 0xC0, 0xE4, 0x2B, 0xB1, 0x95, 0xE2, 0x62, 0xCB, 0x3B, 0x3A, 0x74, 0xA0, 0xDA, 0xE1, 0xC8};
+
+ struct aws_byte_cursor key_cur = aws_byte_cursor_from_array(key, sizeof(key));
+ struct aws_byte_cursor iv_cur = aws_byte_cursor_from_array(iv, sizeof(iv));
+ struct aws_byte_cursor aad_cur = aws_byte_cursor_from_array(aad, sizeof(aad));
+ struct aws_byte_cursor expected_tag_cur = aws_byte_cursor_from_array(expected_tag, sizeof(expected_tag));
+ struct aws_byte_cursor data_cur = {0};
+
+ return s_aes_gcm_corner_case_checker(allocator, key_cur, iv_cur, aad_cur, data_cur, expected_tag_cur);
+}
+AWS_TEST_CASE(aes_test_empty_input_gcm_tag_corner_cases, s_aes_test_empty_input_gcm_tag_corner_cases)
+
+static int s_aes_test_gcm_tag_corner_cases(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ uint8_t iv[] = {0xFB, 0x7B, 0x4A, 0x82, 0x4E, 0x82, 0xDA, 0xA6, 0xC8, 0xBC, 0x12, 0x51};
+
+ uint8_t key[] = {0x20, 0x14, 0x2E, 0x89, 0x8C, 0xD2, 0xFD, 0x98, 0x0F, 0xBF, 0x34, 0xDE, 0x6B, 0xC8, 0x5C, 0x14,
+ 0xDA, 0x7D, 0x57, 0xBD, 0x28, 0xF4, 0xAA, 0x5C, 0xF1, 0x72, 0x8A, 0xB6, 0x4E, 0x84, 0x31, 0x42};
+
+ uint8_t aad[] = {0x16, 0x7B, 0x5C, 0x22, 0x61, 0x77, 0x73, 0x3A, 0x78, 0x2D, 0x61, 0x6D, 0x7A, 0x2D, 0x63, 0x65,
+ 0x6B, 0x2D, 0x61, 0x6C, 0x67, 0x5C, 0x22, 0x3A, 0x20, 0x5C, 0x22, 0x41, 0x45, 0x53, 0x2F, 0x47,
+ 0x43, 0x4D, 0x2F, 0x4E, 0x6F, 0x50, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x5C, 0x22, 0x7D};
+
+ uint8_t data[] = {
+ 0x84, 0x99, 0x89, 0x3E, 0x16, 0xB0, 0xBA, 0x8B, 0x00, 0x7D, 0x54, 0x66, 0x5A, 0x84, 0x99, 0x89, 0x3E};
+
+ uint8_t expected_tag[] = {
+ 0x76, 0x4D, 0x21, 0xD6, 0xC0, 0xD8, 0xC7, 0xF9, 0xCA, 0x6D, 0xF2, 0x19, 0xAE, 0x56, 0xDC, 0x1F};
+
+ struct aws_byte_cursor key_cur = aws_byte_cursor_from_array(key, sizeof(key));
+ struct aws_byte_cursor iv_cur = aws_byte_cursor_from_array(iv, sizeof(iv));
+ struct aws_byte_cursor aad_cur = aws_byte_cursor_from_array(aad, sizeof(aad));
+ struct aws_byte_cursor expected_tag_cur = aws_byte_cursor_from_array(expected_tag, sizeof(expected_tag));
+ struct aws_byte_cursor data_cur = aws_byte_cursor_from_array(data, sizeof(data));
+
+ return s_aes_gcm_corner_case_checker(allocator, key_cur, iv_cur, aad_cur, data_cur, expected_tag_cur);
+}
+AWS_TEST_CASE(aes_test_gcm_tag_corner_cases, s_aes_test_gcm_tag_corner_cases)
+
+static int s_aes_test_gcm_tag_large_input_corner_cases(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ uint8_t iv[] = {0xFB, 0x7B, 0x4A, 0x82, 0x4E, 0x82, 0xDA, 0xA6, 0xC8, 0xBC, 0x12, 0x51};
+
+ uint8_t key[] = {0x20, 0x14, 0x2E, 0x89, 0x8C, 0xD2, 0xFD, 0x98, 0x0F, 0xBF, 0x34, 0xDE, 0x6B, 0xC8, 0x5C, 0x14,
+ 0xDA, 0x7D, 0x57, 0xBD, 0x28, 0xF4, 0xAA, 0x5C, 0xF1, 0x72, 0x8A, 0xB6, 0x4E, 0x84, 0x31, 0x42};
+
+ uint8_t aad[] = {0x16, 0x7B, 0x5C, 0x22, 0x61, 0x77, 0x73, 0x3A, 0x78, 0x2D, 0x61, 0x6D, 0x7A, 0x2D, 0x63, 0x65,
+ 0x6B, 0x2D, 0x61, 0x6C, 0x67, 0x5C, 0x22, 0x3A, 0x20, 0x5C, 0x22, 0x41, 0x45, 0x53, 0x2F, 0x47,
+ 0x43, 0x4D, 0x2F, 0x4E, 0x6F, 0x50, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x5C, 0x22, 0x7D};
+
+ uint8_t data[] = {0x84, 0x99, 0x89, 0x3E, 0x16, 0xB0, 0xBA, 0x8B, 0x00, 0x7D, 0x54, 0x66, 0x5A,
+ 0x84, 0x99, 0x89, 0x3E, 0x84, 0x99, 0x89, 0x3E, 0x16, 0xB0, 0xBA, 0x8B, 0x00,
+ 0x7D, 0x54, 0x66, 0x5A, 0x84, 0x99, 0x89, 0x3E, 0x84, 0x99, 0x89, 0x3E, 0x16,
+ 0xB0, 0xBA, 0x8B, 0x00, 0x7D, 0x54, 0x66, 0x5A, 0x84, 0x99, 0x89, 0x3E};
+
+ uint8_t expected_tag[] = {
+ 0xEA, 0x5E, 0x8A, 0x4B, 0x76, 0xE8, 0x9D, 0xC5, 0xF1, 0x32, 0x14, 0x64, 0xD0, 0x93, 0x74, 0xB7};
+
+ struct aws_byte_cursor key_cur = aws_byte_cursor_from_array(key, sizeof(key));
+ struct aws_byte_cursor iv_cur = aws_byte_cursor_from_array(iv, sizeof(iv));
+ struct aws_byte_cursor aad_cur = aws_byte_cursor_from_array(aad, sizeof(aad));
+ struct aws_byte_cursor expected_tag_cur = aws_byte_cursor_from_array(expected_tag, sizeof(expected_tag));
+ struct aws_byte_cursor data_cur = aws_byte_cursor_from_array(data, sizeof(data));
+
+ return s_aes_gcm_corner_case_checker(allocator, key_cur, iv_cur, aad_cur, data_cur, expected_tag_cur);
+}
+AWS_TEST_CASE(aes_test_gcm_tag_large_input_corner_cases, s_aes_test_gcm_tag_large_input_corner_cases)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cvise for openSUSE:Factory checked in at 2024-06-27 16:04:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cvise (Old)
and /work/SRC/openSUSE:Factory/.cvise.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cvise"
Thu Jun 27 16:04:46 2024 rev:79 rq:1183541 version:2.10.0+git.20240603.16a34b2
Changes:
--------
--- /work/SRC/openSUSE:Factory/cvise/cvise.changes 2024-04-23 18:57:43.190029043 +0200
+++ /work/SRC/openSUSE:Factory/.cvise.new.18349/cvise.changes 2024-06-27 16:05:22.907194831 +0200
@@ -1,0 +2,24 @@
+Thu Jun 27 07:38:28 UTC 2024 - martin.liska(a)hey.com
+
+- Update to version 2.10.0+git.20240603.16a34b2:
+ * Fix fallout from ClassTemplateSpecializationDecl::getTypeAsWritten
+ * Remove uses of ClassTemplateSpecializationDecl::getTypeAsWritten (#143)
+ * Fix deprecated decl (#141)
+ * Move to ubuntu:rolling again
+ * Add VSCode settings file
+ * Add Dockerfile for LLVM tip builds
+
+-------------------------------------------------------------------
+Mon May 06 19:22:59 UTC 2024 - martin.liska(a)hey.com
+
+- Update to version 2.10.0+git.20240506.fd50de2:
+ * Manipulate with tempfiles after they are closed (#139)
+ * Fix --print-diff after pathlib has been used
+ * Apply Ruff format
+ * Reduce logging output verbosity
+ * Fix Ruff linter issues
+ * Stick to Ubuntu 23.10
+ * Ensure that clang delta is also compiled with C++17 on Windows
+ * Also instruct to install chardet on Windows
+
+-------------------------------------------------------------------
Old:
----
cvise-2.10.0+git.20240415.00bdd8c.tar.xz
New:
----
cvise-2.10.0+git.20240603.16a34b2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cvise.spec ++++++
--- /var/tmp/diff_new_pack.9CNEOV/_old 2024-06-27 16:05:23.851229492 +0200
+++ /var/tmp/diff_new_pack.9CNEOV/_new 2024-06-27 16:05:23.851229492 +0200
@@ -17,7 +17,7 @@
Name: cvise
-Version: 2.10.0+git.20240415.00bdd8c
+Version: 2.10.0+git.20240603.16a34b2
Release: 0
Summary: Super-parallel Python port of the C-Reduce
License: BSD-3-Clause
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.9CNEOV/_old 2024-06-27 16:05:23.903231401 +0200
+++ /var/tmp/diff_new_pack.9CNEOV/_new 2024-06-27 16:05:23.907231548 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/marxin/cvise</param>
- <param name="changesrevision">00bdd8c1f9824002b10ac5fecd31dff6c5bef671</param></service></servicedata>
+ <param name="changesrevision">16a34b273966e32843b3f193590198e2a769b1b0</param></service></servicedata>
(No newline at EOF)
++++++ cvise-2.10.0+git.20240415.00bdd8c.tar.xz -> cvise-2.10.0+git.20240603.16a34b2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/.github/workflows/build-llvm-nightly.yml new/cvise-2.10.0+git.20240603.16a34b2/.github/workflows/build-llvm-nightly.yml
--- old/cvise-2.10.0+git.20240415.00bdd8c/.github/workflows/build-llvm-nightly.yml 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/.github/workflows/build-llvm-nightly.yml 2024-06-03 12:35:00.000000000 +0200
@@ -29,6 +29,8 @@
- run: chmod +x llvm.sh
- run: ./llvm.sh 19
- run: apt-get install -y bolt-19 clang-19 libclang-common-19-dev libclang-19-dev mlir-19-tools llvm-19-tools libclang-common-19-dev libclang-19-dev libclang1-19 clang-format-19 python3-clang-19 clangd-19 clang-tidy-19 libomp-19-dev
+ # TODO: remove in the future
+ - run: touch /usr/lib/llvm-19/lib/libLibcTableGenUtil.a
- uses: actions/checkout@v4
- run: mkdir objdir
- run: cmake ..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/.gitignore new/cvise-2.10.0+git.20240603.16a34b2/.gitignore
--- old/cvise-2.10.0+git.20240415.00bdd8c/.gitignore 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/.gitignore 2024-06-03 12:35:00.000000000 +0200
@@ -22,7 +22,6 @@
*.vcxproj
*.vcxproj.filters
*.sln
-.vscode
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
@@ -40,6 +39,7 @@
x86/
objdir/
build/
+build-docker/
# Visual Studio 2015 cache/options directory
.vs/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/.vscode/settings.json new/cvise-2.10.0+git.20240603.16a34b2/.vscode/settings.json
--- old/cvise-2.10.0+git.20240415.00bdd8c/.vscode/settings.json 1970-01-01 01:00:00.000000000 +0100
+++ new/cvise-2.10.0+git.20240603.16a34b2/.vscode/settings.json 2024-06-03 12:35:00.000000000 +0200
@@ -0,0 +1,4 @@
+{
+ "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
+ "editor.formatOnSave": false
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/CMakeLists.txt new/cvise-2.10.0+git.20240603.16a34b2/CMakeLists.txt
--- old/cvise-2.10.0+git.20240415.00bdd8c/CMakeLists.txt 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/CMakeLists.txt 2024-06-03 12:35:00.000000000 +0200
@@ -190,6 +190,8 @@
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -O3 -g")
+elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17 /GR-")
endif()
###############################################################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/Dockerfile new/cvise-2.10.0+git.20240603.16a34b2/Dockerfile
--- old/cvise-2.10.0+git.20240415.00bdd8c/Dockerfile 1970-01-01 01:00:00.000000000 +0100
+++ new/cvise-2.10.0+git.20240603.16a34b2/Dockerfile 2024-06-03 12:35:00.000000000 +0200
@@ -0,0 +1,10 @@
+FROM ubuntu:rolling
+RUN apt-get update
+RUN apt-get -qq install -y gcc g++ wget lsb-release wget software-properties-common gnupg git cmake flex python3-pebble python3-psutil python3-chardet python3-pytest vim unifdef
+RUN wget https://apt.llvm.org/llvm.sh
+RUN chmod +x llvm.sh
+RUN ./llvm.sh 19
+RUN apt-get install -y bolt-19 clang-19 libclang-common-19-dev libclang-19-dev mlir-19-tools llvm-19-tools libclang-common-19-dev libclang-19-dev libclang1-19 clang-format-19 python3-clang-19 clangd-19 clang-tidy-19 libomp-19-dev
+RUN touch /usr/lib/llvm-19/lib/libLibcTableGenUtil.a
+RUN mkdir -p /tmp/cvise/build-docker
+WORKDIR /tmp/cvise/build-docker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/INSTALL.md new/cvise-2.10.0+git.20240603.16a34b2/INSTALL.md
--- old/cvise-2.10.0+git.20240415.00bdd8c/INSTALL.md 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/INSTALL.md 2024-06-03 12:35:00.000000000 +0200
@@ -159,7 +159,7 @@
Download flex from https://github.com/lexxmark/winflexbison/releases/download/v2.5.24/win_flex…
```
-pip install pytest psutil pebble
+pip install pytest psutil pebble chardet
@call "%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
set LLVM_DIR=D:\src\llvm-project\build\lib\cmake\llvm
set CLANG_DIR=D:\src\llvm-project\build\lib\cmake\clang
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/CMakeLists.txt new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/CMakeLists.txt
--- old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/CMakeLists.txt 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/CMakeLists.txt 2024-06-03 12:35:00.000000000 +0200
@@ -728,7 +728,7 @@
foreach(flag ${msvc_warning_flags})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
- set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${flag}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endforeach(flag)
endif(MSVC)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/CommonRenameClassRewriteVisitor.h new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/CommonRenameClassRewriteVisitor.h
--- old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/CommonRenameClassRewriteVisitor.h 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/CommonRenameClassRewriteVisitor.h 2024-06-03 12:35:00.000000000 +0200
@@ -56,9 +56,10 @@
bool VisitDependentTemplateSpecializationTypeLoc(
DependentTemplateSpecializationTypeLoc DTSLoc);
-
+#if LLVM_VERSION_MAJOR < 19
bool VisitClassTemplatePartialSpecializationDecl(
ClassTemplatePartialSpecializationDecl *D);
+#endif
bool VisitClassTemplateSpecializationDecl(
ClassTemplateSpecializationDecl *TSD);
@@ -122,6 +123,7 @@
return true;
}
+#if LLVM_VERSION_MAJOR < 19
template<typename T>
bool CommonRenameClassRewriteVisitor<T>::
VisitClassTemplatePartialSpecializationDecl(
@@ -154,6 +156,7 @@
}
return true;
}
+#endif
// ISSUE: I am not sure why, but RecursiveASTVisitor doesn't recursively
// visit base classes from explicit template specialization, e.g.,
@@ -162,6 +165,8 @@
// template<> class B : public A<short> { };
// In the above case, A<short> won't be touched.
// So we have to do it manually
+
+#if LLVM_VERSION_MAJOR < 19
template<typename T>
bool CommonRenameClassRewriteVisitor<T>::VisitClassTemplateSpecializationDecl(
ClassTemplateSpecializationDecl *TSD)
@@ -177,6 +182,33 @@
}
return true;
}
+#else
+template<typename T>
+bool CommonRenameClassRewriteVisitor<T>::VisitClassTemplateSpecializationDecl(
+ ClassTemplateSpecializationDecl *TSD)
+{
+ if (!TSD->isExplicitInstantiationOrSpecialization())
+ return true;
+
+ const CXXRecordDecl *CXXRD = TSD->getSpecializedTemplate()->getTemplatedDecl();
+ std::string Name;
+ if (getNewName(CXXRD, Name)) {
+ SourceLocation LocStart = TSD->getLocation();
+ TransAssert(LocStart.isValid() && "Invalid Location!");
+ TheRewriter->ReplaceText(LocStart, CXXRD->getNameAsString().size(), Name);
+ }
+
+ if (TSD->isExplicitSpecialization() && TSD->isCompleteDefinition()) {
+ for (CXXRecordDecl::base_class_const_iterator I = TSD->bases_begin(),
+ E = TSD->bases_end(); I != E; ++I) {
+ TypeSourceInfo *TSI = (*I).getTypeSourceInfo();
+ TransAssert(TSI && "Bad TypeSourceInfo!");
+ getDerived().TraverseTypeLoc(TSI->getTypeLoc());
+ }
+ }
+ return true;
+}
+#endif
template<typename T>
bool CommonRenameClassRewriteVisitor<T>::VisitCXXRecordDecl(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/RemoveNamespace.cpp new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/RemoveNamespace.cpp
--- old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/RemoveNamespace.cpp 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/RemoveNamespace.cpp 2024-06-03 12:35:00.000000000 +0200
@@ -91,9 +91,6 @@
bool VisitTemplateSpecializationTypeLoc(
TemplateSpecializationTypeLoc TSPLoc);
- bool VisitClassTemplatePartialSpecializationDecl(
- ClassTemplatePartialSpecializationDecl *D);
-
bool VisitDependentTemplateSpecializationTypeLoc(
DependentTemplateSpecializationTypeLoc DTSLoc);
@@ -132,14 +129,25 @@
bool RemoveNamespaceRewriteVisitor::VisitClassTemplateSpecializationDecl(
ClassTemplateSpecializationDecl *TSD)
{
- if (!TSD->isExplicitSpecialization() || !TSD->isCompleteDefinition())
+ if (!TSD->isExplicitInstantiationOrSpecialization())
return true;
- for (CXXRecordDecl::base_class_const_iterator I = TSD->bases_begin(),
- E = TSD->bases_end(); I != E; ++I) {
- TypeSourceInfo *TSI = (*I).getTypeSourceInfo();
- TransAssert(TSI && "Bad TypeSourceInfo!");
- TraverseTypeLoc(TSI->getTypeLoc());
+ const CXXRecordDecl *CXXRD = TSD->getSpecializedTemplate()->getTemplatedDecl();
+ std::string Name;
+ if (ConsumerInstance->getNewName(CXXRD, Name)) {
+ SourceLocation LocStart = TSD->getLocation();
+ TransAssert(LocStart.isValid() && "Invalid Location!");
+ ConsumerInstance->TheRewriter.ReplaceText(
+ LocStart, CXXRD->getNameAsString().size(), Name);
+ }
+
+ if (TSD->isExplicitSpecialization() && TSD->isCompleteDefinition()) {
+ for (CXXRecordDecl::base_class_const_iterator I = TSD->bases_begin(),
+ E = TSD->bases_end(); I != E; ++I) {
+ TypeSourceInfo *TSI = (*I).getTypeSourceInfo();
+ TransAssert(TSI && "Bad TypeSourceInfo!");
+ TraverseTypeLoc(TSI->getTypeLoc());
+ }
}
return true;
}
@@ -419,38 +427,6 @@
return true;
}
-bool RemoveNamespaceRewriteVisitor::VisitClassTemplatePartialSpecializationDecl(
- ClassTemplatePartialSpecializationDecl *D)
-{
- const Type *Ty = D->getInjectedSpecializationType().getTypePtr();
- TransAssert(Ty && "Bad TypePtr!");
- const TemplateSpecializationType *TST =
- dyn_cast<TemplateSpecializationType>(Ty);
- TransAssert(TST && "Bad TemplateSpecializationType!");
-
- TemplateName TplName = TST->getTemplateName();
- const TemplateDecl *TplD = TplName.getAsTemplateDecl();
- TransAssert(TplD && "Invalid TemplateDecl!");
- NamedDecl *ND = TplD->getTemplatedDecl();
- TransAssert(ND && "Invalid NamedDecl!");
-
- const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(ND);
- TransAssert(CXXRD && "Invalid CXXRecordDecl!");
-
- std::string Name;
- if (ConsumerInstance->getNewName(CXXRD, Name)) {
- const TypeSourceInfo *TyInfo = D->getTypeAsWritten();
- if (!TyInfo)
- return true;
- TypeLoc TyLoc = TyInfo->getTypeLoc();
- SourceLocation LocStart = TyLoc.getBeginLoc();
- TransAssert(LocStart.isValid() && "Invalid Location!");
- ConsumerInstance->TheRewriter.ReplaceText(
- LocStart, CXXRD->getNameAsString().size(), Name);
- }
- return true;
-}
-
// handle the case where a template specialization type cannot be resolved, e.g.
// template <class T> struct Base {};
// template <class T> struct Derived: public Base<T> {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/RenameCXXMethod.cpp new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/RenameCXXMethod.cpp
--- old/cvise-2.10.0+git.20240415.00bdd8c/clang_delta/RenameCXXMethod.cpp 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/clang_delta/RenameCXXMethod.cpp 2024-06-03 12:35:00.000000000 +0200
@@ -426,7 +426,7 @@
{
size_t PrefixLen = MethodNamePrefix.length();
StringRef NamePrefix = Name.substr(0, PrefixLen);
- if (!NamePrefix.equals(MethodNamePrefix))
+ if (NamePrefix != MethodNamePrefix)
return false;
llvm::APInt Num;
return !Name.drop_front(PrefixLen).getAsInteger(10, Num);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/cvise.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/cvise.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/cvise.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/cvise.py 2024-06-03 12:35:00.000000000 +0200
@@ -195,8 +195,8 @@
improvement = (
self.test_manager.orig_total_file_size - total_file_size
) / self.test_manager.orig_total_file_size
- logging.info(
- f'Termination check: stopping threshold is {self.test_manager.stopping_threshold}; current improvement is {improvement}'
+ logging.debug(
+ f'Termination check: stopping threshold is {self.test_manager.stopping_threshold}; current improvement is {improvement:.1f}'
)
if improvement >= self.test_manager.stopping_threshold:
met_stopping_threshold = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/clang.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/clang.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/clang.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/clang.py 2024-06-03 12:35:00.000000000 +0200
@@ -1,9 +1,9 @@
import logging
import os
import shutil
-import tempfile
from cvise.passes.abstract import AbstractPass, PassResult
+from cvise.utils.misc import CloseableTemporaryFile
class ClangPass(AbstractPass):
@@ -21,7 +21,7 @@
def transform(self, test_case, state, process_event_notifier):
tmp = os.path.dirname(test_case)
- with tempfile.NamedTemporaryFile(mode='w', delete=False, dir=tmp) as tmp_file:
+ with CloseableTemporaryFile(mode='w', dir=tmp) as tmp_file:
args = [
self.external_programs['clang_delta'],
f'--transformation={self.arg}',
@@ -33,13 +33,13 @@
logging.debug(' '.join(cmd))
- stdout, _stderr, returncode = process_event_notifier.run_process(cmd)
+ stdout, _, returncode = process_event_notifier.run_process(cmd)
if returncode == 0:
tmp_file.write(stdout)
- shutil.move(tmp_file.name, test_case)
+ tmp_file.close()
+ shutil.copy(tmp_file.name, test_case)
return (PassResult.OK, state)
else:
- os.unlink(tmp_file.name)
if returncode == 255 or returncode == 1:
return (PassResult.STOP, state)
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/clangbinarysearch.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/clangbinarysearch.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/clangbinarysearch.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/clangbinarysearch.py 2024-06-03 12:35:00.000000000 +0200
@@ -3,10 +3,10 @@
import re
import shutil
import subprocess
-import tempfile
import time
from cvise.passes.abstract import AbstractPass, BinaryState, PassResult
+from cvise.utils.misc import CloseableTemporaryFile
class ClangBinarySearchPass(AbstractPass):
@@ -97,7 +97,7 @@
logging.debug(f'TRANSFORM: {state}')
tmp = os.path.dirname(test_case)
- with tempfile.NamedTemporaryFile(mode='w', delete=False, dir=tmp) as tmp_file:
+ with CloseableTemporaryFile(mode='w', dir=tmp) as tmp_file:
args = [
f'--transformation={self.arg}',
f'--counter={state.index + 1}',
@@ -115,11 +115,11 @@
stdout, stderr, returncode = process_event_notifier.run_process(cmd)
self.parse_stderr(state, stderr)
tmp_file.write(stdout)
+ tmp_file.close()
if returncode == 0:
- shutil.move(tmp_file.name, test_case)
+ shutil.copy(tmp_file.name, test_case)
return (PassResult.OK, state)
else:
- os.unlink(tmp_file.name)
return (
PassResult.STOP if returncode == 255 else PassResult.ERROR,
state,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/clex.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/clex.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/clex.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/clex.py 2024-06-03 12:35:00.000000000 +0200
@@ -1,8 +1,8 @@
import os
import shutil
-import tempfile
from cvise.passes.abstract import AbstractPass, PassResult
+from cvise.utils.misc import CloseableTemporaryFile
class ClexPass(AbstractPass):
@@ -20,15 +20,15 @@
def transform(self, test_case, state, process_event_notifier):
tmp = os.path.dirname(test_case)
- with tempfile.NamedTemporaryFile(mode='w', delete=False, dir=tmp) as tmp_file:
+ with CloseableTemporaryFile(mode='w', dir=tmp) as tmp_file:
cmd = [self.external_programs['clex'], str(self.arg), str(state), test_case]
stdout, _stderr, returncode = process_event_notifier.run_process(cmd)
if returncode == 51:
tmp_file.write(stdout)
- shutil.move(tmp_file.name, test_case)
+ tmp_file.close()
+ shutil.copy(tmp_file.name, test_case)
return (PassResult.OK, state)
else:
- os.unlink(tmp_file.name)
return (
PassResult.STOP if returncode == 71 else PassResult.ERROR,
state,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/lines.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/lines.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/lines.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/lines.py 2024-06-03 12:35:00.000000000 +0200
@@ -6,6 +6,7 @@
from cvise.passes.abstract import AbstractPass, BinaryState, PassResult
from cvise.utils.error import InsaneTestCaseError
+from cvise.utils.misc import CloseableTemporaryFile
class LinesPass(AbstractPass):
@@ -15,9 +16,10 @@
def __format(self, test_case, check_sanity):
tmp = os.path.dirname(test_case)
- with tempfile.NamedTemporaryFile(mode='w+', dir=tmp) as backup, tempfile.NamedTemporaryFile(
+ with CloseableTemporaryFile(mode='w+', dir=tmp) as backup, CloseableTemporaryFile(
mode='w+', dir=tmp
) as tmp_file:
+ backup.close()
with open(test_case) as in_file:
try:
cmd = [self.external_programs['topformflat'], self.arg]
@@ -28,7 +30,7 @@
for line in proc.stdout.splitlines(keepends=True):
if not line.isspace():
tmp_file.write(line)
- tmp_file.flush()
+ tmp_file.close()
# we need to check that sanity check is still fine
if check_sanity:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/unifdef.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/unifdef.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/passes/unifdef.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/passes/unifdef.py 2024-06-03 12:35:00.000000000 +0200
@@ -36,6 +36,7 @@
tmp = os.path.dirname(test_case)
with tempfile.NamedTemporaryFile(mode='w+', delete=False, dir=tmp) as tmp_file:
+ tmp_file.close()
while True:
du = '-D' if state % 2 == 0 else '-U'
n_index = int(state / 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/utils/misc.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/utils/misc.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/utils/misc.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/utils/misc.py 2024-06-03 12:35:00.000000000 +0200
@@ -1,6 +1,24 @@
+import os
+import tempfile
+from contextlib import contextmanager
+
+
def is_readable_file(filename):
try:
open(filename).read()
return True
except UnicodeDecodeError:
return False
+
+
+# TODO: use tempfile.NamedTemporaryFile(delete_on_close=False) since Python 3.12 is the oldest supported release
+@contextmanager
+def CloseableTemporaryFile(mode='w+b', dir=None):
+ f = tempfile.NamedTemporaryFile(mode=mode, delete=False, dir=dir)
+ try:
+ yield f
+ finally:
+ # For Windows systems, be sure we always close the file before we remove it!
+ if not f.closed:
+ f.close()
+ os.remove(f.name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise/utils/testing.py new/cvise-2.10.0+git.20240603.16a34b2/cvise/utils/testing.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise/utils/testing.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise/utils/testing.py 2024-06-03 12:35:00.000000000 +0200
@@ -197,7 +197,7 @@
def create_root(self):
pass_name = str(self.current_pass).replace('::', '-')
self.root = tempfile.mkdtemp(prefix=f'{self.TEMP_PREFIX}{pass_name}-')
- logging.debug('Creating pass root folder: %s' % self.root)
+ logging.debug(f'Creating pass root folder: {self.root}')
def remove_root(self):
if not self.save_temps:
@@ -294,10 +294,10 @@
)
with (crash_dir / 'PASS_BUG_INFO.TXT').open(mode='w') as info_file:
- info_file.write('Package: %s\n' % CVise.Info.PACKAGE_STRING)
- info_file.write('Git version: %s\n' % CVise.Info.GIT_VERSION)
- info_file.write('LLVM version: %s\n' % CVise.Info.LLVM_VERSION)
- info_file.write('System: %s\n' % str(platform.uname()))
+ info_file.write(f'Package: {CVise.Info.PACKAGE_STRING}\n')
+ info_file.write(f'Git version: {CVise.Info.GIT_VERSION}\n')
+ info_file.write(f'LLVM version: {CVise.Info.LLVM_VERSION}\n')
+ info_file.write(f'System: {str(platform.uname())}\n')
info_file.write(PassBugError.MSG.format(self.current_pass, problem, test_env.state, crash_dir))
if self.die_on_pass_bug:
@@ -313,7 +313,7 @@
with open(changed_file) as f:
changed_file_lines = f.readlines()
- diffed_lines = difflib.unified_diff(orig_file_lines, changed_file_lines, orig_file, changed_file)
+ diffed_lines = difflib.unified_diff(orig_file_lines, changed_file_lines, str(orig_file), str(changed_file))
return ''.join(diffed_lines)
@@ -345,7 +345,7 @@
@classmethod
def log_key_event(cls, event):
- logging.info('****** %s ******' % event)
+ logging.info(f'****** {event} ******')
def kill_pid_queue(self):
active_pids = set()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cvise-2.10.0+git.20240415.00bdd8c/cvise.py new/cvise-2.10.0+git.20240603.16a34b2/cvise.py
--- old/cvise-2.10.0+git.20240415.00bdd8c/cvise.py 2024-04-15 13:06:47.000000000 +0200
+++ new/cvise-2.10.0+git.20240603.16a34b2/cvise.py 2024-06-03 12:35:00.000000000 +0200
@@ -150,17 +150,14 @@
return 1
-EPILOG_TEXT = (
- """
+EPILOG_TEXT = f"""
available shortcuts:
S - skip execution of the current pass
D - toggle --print-diff option
For bug reporting instructions, please use:
-%s
+{CVise.Info.PACKAGE_URL}
"""
- % CVise.Info.PACKAGE_URL
-)
if __name__ == '__main__':
parser = argparse.ArgumentParser(
@@ -312,7 +309,7 @@
'--version',
action='version',
version=CVise.Info.PACKAGE_STRING
- + (' (%s)' % CVise.Info.GIT_VERSION if CVise.Info.GIT_VERSION != 'unknown' else ''),
+ + (f' ({CVise.Info.GIT_VERSION})' if CVise.Info.GIT_VERSION != 'unknown' else ''),
)
parser.add_argument(
'--commands',
@@ -450,7 +447,7 @@
script.write(f'#!/usr/bin/env {args.shell}\n\n')
script.write(args.commands + '\n')
os.chmod(script.name, 0o744)
- logging.info('Using temporary interestingness test: %s' % script.name)
+ logging.info(f'Using temporary interestingness test: {script.name}')
args.interestingness_test = script.name
test_manager = testing.TestManager(
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package vdt for openSUSE:Factory checked in at 2024-06-27 16:04:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vdt (Old)
and /work/SRC/openSUSE:Factory/.vdt.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vdt"
Thu Jun 27 16:04:44 2024 rev:2 rq:1183535 version:0.4.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/vdt/vdt.changes 2024-06-24 20:55:24.804958336 +0200
+++ /work/SRC/openSUSE:Factory/.vdt.new.18349/vdt.changes 2024-06-27 16:05:21.995161345 +0200
@@ -1,0 +2,5 @@
+Wed Jun 26 14:14:57 UTC 2024 - Andreas Schwab <schwab(a)suse.de>
+
+- Remove use of invalid compiler option
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vdt.spec ++++++
--- /var/tmp/diff_new_pack.9aZ2XG/_old 2024-06-27 16:05:22.615184110 +0200
+++ /var/tmp/diff_new_pack.9aZ2XG/_new 2024-06-27 16:05:22.615184110 +0200
@@ -1,7 +1,7 @@
#
# spec file for package vdt
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -56,7 +56,7 @@
%cmake \
-DDIAG:BOOL=ON \
-DAVX:BOOL=OFF \
-%ifarch aarch64 %{arm} %{ix86}
+%ifnarch x86_64
-DSSE:BOOL=OFF \
%else
-DSSE:BOOL=ON \
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package broot for openSUSE:Factory checked in at 2024-06-27 16:04:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/broot (Old)
and /work/SRC/openSUSE:Factory/.broot.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "broot"
Thu Jun 27 16:04:42 2024 rev:7 rq:1183536 version:1.39.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/broot/broot.changes 2023-08-31 13:51:12.676003851 +0200
+++ /work/SRC/openSUSE:Factory/.broot.new.18349/broot.changes 2024-06-27 16:05:16.306952499 +0200
@@ -1,0 +2,123 @@
+Thu Jun 27 07:14:22 UTC 2024 - Martin Sirringhaus <martin.sirringhaus(a)suse.com>
+
+- Update to v1.39.0
+ * `:open_trash` shows the content of the trash. Other new internals & verbs: `:delete_trashed_file`, `:restore_trashed_file`, `:purge_trash`
+ * it's now possible to remove a default keybinding by defining a verb with no execution
+ * fix build on Android - thanks @dead10ck
+
+- Update to v1.38.0
+ * `-{flags}` verb lets you change the state the same way you do it at start, eg `:-sd` to show sizes and dates
+ * calling `:focus` on the tree root now goes up the tree (experimental)
+
+- Update to v1.37.0
+ * optionally display lines surrounding a matching line in preview, with `lines_before_match_in_preview` and `lines_after_match_in_preview`
+ * filtered preview: jump between matches with `:next_match` (default: `tab`) and `:previous_match` (default `shift-tab`)
+ * display setuid, setgid and sticky bits in permission
+
+- Update to v1.36.1
+ * fix ANSI code leaking to the input on start on Mac
+
+- Update to v1.36.0
+ * releases at github should be more `cargo binstall` friendly
+ * improved `--help`
+ * new `:stage_all_directories` internal
+ * `:print_tree` is one line shorter, so as to let the original shell command visible without scroll
+ * fix and document the "kitty-csi-check" optional feature which can be enabled at compilation
+
+- Update to v1.35.0
+ * Nerdfont icon theme
+
+- Update to v1.34.0
+ * new `--verb-output` launch argument, dedicated to the new `:clear_output` and `:write_output` internals
+ * verb sequences (based on `cmd`) can take arguments from the verb invocation
+ * don't fail launch in case of bad verb configuration, more helpful error message in such case
+ * faster kitty image rendering by default
+ * `{file-git-relative}` verb argument
+ * modify nushell function import: `use` instead of `source`
+ * fix some resizing and flickering problems on Windows (appeared with 1.33.0)
+ * write `installed` flag file on `--install`
+
+- Update to v1.33.1
+ * fix the release's version
+
+- Update to v1.33.0
+ * on terminals supporting the kitty keyboard protocol, you can now define and use key combinations like `space-n`, `ctrl-alt-a-b`, `shift-space-c`, `ctrl-enter`, etc.
+ * new syntax for special paths
+
+- Update to v1.32.0
+ * with "modal" enabled, `initial_mode` setting lets you choose whether to start in `input` mode or `command` mode (default)
+
+- Update to v1.31.0
+ * keep broot's work dir synchronized with the root of the current panel. Can be disabled in conf with `update_work_dir: false`
+ * fix `:trash` internal not working on staged files
+
+- Update to v1.30.2
+ * don't canonicalize paths on windows on new panels
+
+- Update to v1.30.1
+ * nushell script: replace the deprecated `def-env` with `def --env`
+
+- Update to v1.30.0
+ * `:trash` internal - I'd like feedback on this one
+ * solve symlinks on `:panel_right` to display the dest path and the dest filesystem
+ * `:panel_right` on a directory now removes the filter
+ * more '~' expansion in verb arguments
+
+- Update to v1.29.0
+ * `terminal_title` option in configuration
+ * `:toggle_tree` internal and `--tree` and `--no-tree` launch flags (experimental, feedback welcome)
+ * `{git-name}` verb argument
+
+- Update to v1.28.1
+ * fix a regression in handling of rooted gitignore patterns
+
+- Update to v1.28.0
+ * left and right keys bound to verbs can be used when the input isn't empty, if they would have no effect to the input
+ * default_flags now accept long parameters, including --cmd
+ * gitignore: fix relative patterns with several tokens
+
+- Update to v1.27.0
+ * the `apply_to` verb filter accepts new values: `text_file` and `binary_file`. Broot users editing files in their terminal (vi, emacs, etc.) should configure broot to open their text editor on `enter`: see https://dystroy.org/broot/tricks/#change-standard-file-opening
+ * small breaking change: `:stage_all_files` now stages also symlinks
+ * new `{git-root}` verb argument
+ * fix a freeze on windows when launching a search with `-c`
+ * fix automatic preview pattern not escaping spaces and colons
+
+- Update to v1.26.1
+ * improved status line
+
+- Update to v1.26.0
+ * when given a path to a file at launch, broot now selects it in the tree and opens it in preview
+ * allow rebinding of the 'tab' and 'esc' keys with the `:next_match` and `:escape` internals
+ * fix fuzzy patterns not case insensitive on some characters
+
+- Update to v1.25.2
+ * optional BROOT_CONFIG_DIR env var - the site now shows all env variables: https://dystroy.org/broot/launch/#environment-variables
+ * `--only-folders` now longer allows symlinks to non directories
+
+- Update to v1.25.1
+ * fix shift-char in input extending the selection
+
+- Update to v1.25.0
+ * allow unescaped '::' in pattern position, experimental (might be removed)
+ * allow hexa color notation in skins (eg `#fb0` or `#FFD700`)
+
+- Update to v1.24.2
+ * fix a case of br script installation failing on Windows/Powershell
+
+- Update to v1.24.1
+ * slightly better `--help`
+
+- Update to v1.24.0
+ * installer for the powershell br script on windows
+ * new `--help`, more compact
+ * allow extra spaces before the verb
+ * updated man page, now distributed in releases as /man/broot.1
+
+- Update to v1.23.0
+ * prettier, faster SVG rendering
+ * reorganize default conf files, with a "skins" subfolder
+
+- Remove cargo_config, which is now part of the vendor-tarball
+
+-------------------------------------------------------------------
Old:
----
broot-1.22.1.tar.gz
cargo_config
New:
----
_scmsync.obsinfo
broot-1.39.0.tar.gz
build.specials.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ broot.spec ++++++
--- /var/tmp/diff_new_pack.Zm40IJ/_old 2024-06-27 16:05:20.843119047 +0200
+++ /var/tmp/diff_new_pack.Zm40IJ/_new 2024-06-27 16:05:20.859119635 +0200
@@ -17,7 +17,7 @@
Name: broot
-Version: 1.22.1
+Version: 1.39.0
Release: 0
Summary: A better way to navigate directories
License: GPL-2.0-only AND MIT AND MPL-2.0
@@ -25,7 +25,6 @@
Source0: https://github.com/Canop/broot/archive/v%{version}.tar.gz#/%{name}-%{versio…
Source1: vendor.tar.xz
Source2: %{name}.changes
-Source3: cargo_config
BuildRequires: cargo-packaging
%description
@@ -34,8 +33,6 @@
%prep
%setup -qa 1
-mkdir .cargo
-cp %{SOURCE3} .cargo/config
%build
%cargo_build
++++++ _scmsync.obsinfo ++++++
mtime: 1719472688
commit: a34a359a0070ff9fa66b00e3931e806220559f833d56e98f786b81f97006d13c
url: https://src.opensuse.org/MSirringhaus/broot.git
revision: a34a359a0070ff9fa66b00e3931e806220559f833d56e98f786b81f97006d13c
++++++ _service ++++++
--- /var/tmp/diff_new_pack.Zm40IJ/_old 2024-06-27 16:05:21.263134468 +0200
+++ /var/tmp/diff_new_pack.Zm40IJ/_new 2024-06-27 16:05:21.299135790 +0200
@@ -1,11 +1,11 @@
<services>
<service name="download_files" mode="disabled" />
<service name="cargo_vendor" mode="disabled">
- <param name="srctar">broot-1.22.1.tar.gz</param>
+ <param name="srctar">broot-1.39.0.tar.gz</param>
<param name="compression">xz</param>
<param name="update">true</param>
+ <param name="filter">true</param>
</service>
- <service name="cargo_audit" mode="disabled" />
</services>
++++++ broot-1.22.1.tar.gz -> broot-1.39.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/broot/broot-1.22.1.tar.gz /work/SRC/openSUSE:Factory/.broot.new.18349/broot-1.39.0.tar.gz differ: char 12, line 1
++++++ vendor.tar.xz ++++++
/work/SRC/openSUSE:Factory/broot/vendor.tar.xz /work/SRC/openSUSE:Factory/.broot.new.18349/vendor.tar.xz differ: char 8, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ibus-typing-booster for openSUSE:Factory checked in at 2024-06-27 16:04:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ibus-typing-booster (Old)
and /work/SRC/openSUSE:Factory/.ibus-typing-booster.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ibus-typing-booster"
Thu Jun 27 16:04:39 2024 rev:123 rq:1183539 version:2.25.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/ibus-typing-booster/ibus-typing-booster.changes 2024-06-25 23:09:54.915637535 +0200
+++ /work/SRC/openSUSE:Factory/.ibus-typing-booster.new.18349/ibus-typing-booster.changes 2024-06-27 16:05:14.102871575 +0200
@@ -1,0 +2,8 @@
+Wed Jun 26 17:14:19 UTC 2024 - maiku.fabian(a)gmail.com
+
+- Update to 2.25.11
+- Yet another fix to make it possible again to use keys with Unicode keysyms
+ in keybindings and make it work with all known versions of ibus
+ (Resolves: https://github.com/mike-fabian/ibus-typing-booster/issues/497)
+
+-------------------------------------------------------------------
Old:
----
ibus-typing-booster-2.25.10.tar.gz
New:
----
ibus-typing-booster-2.25.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ibus-typing-booster.spec ++++++
--- /var/tmp/diff_new_pack.nWurv9/_old 2024-06-27 16:05:14.630890961 +0200
+++ /var/tmp/diff_new_pack.nWurv9/_new 2024-06-27 16:05:14.634891108 +0200
@@ -17,7 +17,7 @@
Name: ibus-typing-booster
-Version: 2.25.10
+Version: 2.25.11
Release: 0
Summary: An input completion utility
License: GPL-3.0-or-later
@@ -143,7 +143,7 @@
# python3 hunspell_suggest.py -v
python3 m17n_translit.py -v
python3 itb_emoji.py -v
- #python3 itb_util.py -v # needs ibus >= 1.5.31
+ python3 itb_util.py -v
popd
mkdir -p /tmp/glib-2.0/schemas/
cp org.freedesktop.ibus.engine.typing-booster.gschema.xml \
++++++ ibus-typing-booster-2.25.10.tar.gz -> ibus-typing-booster-2.25.11.tar.gz ++++++
/work/SRC/openSUSE:Factory/ibus-typing-booster/ibus-typing-booster-2.25.10.tar.gz /work/SRC/openSUSE:Factory/.ibus-typing-booster.new.18349/ibus-typing-booster-2.25.11.tar.gz differ: char 28, line 1
1
0