Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package exiv2 for openSUSE:Factory checked in at 2023-07-19 19:09:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/exiv2 (Old) and /work/SRC/openSUSE:Factory/.exiv2.new.5570 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "exiv2" Wed Jul 19 19:09:47 2023 rev:77 rq:1099225 version:0.28.0 Changes: -------- --- /work/SRC/openSUSE:Factory/exiv2/exiv2.changes 2023-07-01 23:17:58.182230973 +0200 +++ /work/SRC/openSUSE:Factory/.exiv2.new.5570/exiv2.changes 2023-07-19 19:09:50.276286769 +0200 @@ -1,0 +2,6 @@ +Fri Jul 7 21:44:18 UTC 2023 - Konstantin Voinov <k...@kott.no-ip.biz> + +- add exiv2-metadata-null-checks.patch fixes gwenview crashes and + other apps https://github.com/Exiv2/exiv2/issues/2638 + +------------------------------------------------------------------- New: ---- exiv2-metadata-null-checks.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ exiv2.spec ++++++ --- /var/tmp/diff_new_pack.Q0LDAx/_old 2023-07-19 19:09:51.460293694 +0200 +++ /var/tmp/diff_new_pack.Q0LDAx/_new 2023-07-19 19:09:51.468293741 +0200 @@ -27,6 +27,8 @@ Source0: https://github.com/Exiv2/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz Source1: baselibs.conf Patch0: exiv2-build-date.patch +# PATCH-FIX-UPSTREAM exiv2-metadata-null-checks.patch - Check if the metadata is NULL +Patch1: exiv2-metadata-null-checks.patch BuildRequires: cmake BuildRequires: fdupes %if 0%{?suse_version} < 1600 ++++++ exiv2-metadata-null-checks.patch ++++++ >From 360c6cd41f15baf6d999da12e1fc077180f5da91 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse <kevinbackho...@github.com> Date: Sun, 25 Jun 2023 16:14:06 +0100 Subject: [PATCH 1/2] Check if the metadata is NULL. --- src/nikonmn_int.cpp | 16 ++++++++-------- src/sonymn_int.cpp | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/nikonmn_int.cpp b/src/nikonmn_int.cpp index 2887c1b62..949023d00 100644 --- a/src/nikonmn_int.cpp +++ b/src/nikonmn_int.cpp @@ -3384,7 +3384,7 @@ std::ostream& Nikon3MakerNote::printExternalFlashData2(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashMasterDataFl6(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3413,7 +3413,7 @@ std::ostream& Nikon3MakerNote::printFlashMasterDataFl6(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashMasterDataFl7(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3480,7 +3480,7 @@ std::ostream& Nikon3MakerNote::printFlashGroupBCControlData(std::ostream& os, co std::ostream& Nikon3MakerNote::printFlashGroupADataFl6(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3509,7 +3509,7 @@ std::ostream& Nikon3MakerNote::printFlashGroupADataFl6(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashGroupADataFl7(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3538,7 +3538,7 @@ std::ostream& Nikon3MakerNote::printFlashGroupADataFl7(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashGroupBDataFl6(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3567,7 +3567,7 @@ std::ostream& Nikon3MakerNote::printFlashGroupBDataFl6(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashGroupBDataFl7(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3596,7 +3596,7 @@ std::ostream& Nikon3MakerNote::printFlashGroupBDataFl7(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashGroupCDataFl6(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; @@ -3625,7 +3625,7 @@ std::ostream& Nikon3MakerNote::printFlashGroupCDataFl6(std::ostream& os, const V std::ostream& Nikon3MakerNote::printFlashGroupCDataFl7(std::ostream& os, const Value& value, const ExifData* metadata) { std::ios::fmtflags f(os.flags()); - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; os.flags(f); return os; diff --git a/src/sonymn_int.cpp b/src/sonymn_int.cpp index f2950c460..2fe62bdbf 100644 --- a/src/sonymn_int.cpp +++ b/src/sonymn_int.cpp @@ -1799,7 +1799,7 @@ const TagInfo* SonyMakerNote::tagListFp() { std::ostream& SonyMakerNote::printSony2FpAmbientTemperature(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1) + if (value.count() != 1 || !metadata) return os << "(" << value << ")"; auto pos = metadata->findKey(ExifKey("Exif.Sony2Fp.0x0002")); @@ -1879,7 +1879,7 @@ const TagInfo* SonyMakerNote::tagListSonyMisc1() { std::ostream& SonyMakerNote::printSonyMisc1CameraTemperature(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1) + if (value.count() != 1 || !metadata) return os << "(" << value << ")"; auto pos = metadata->findKey(ExifKey("Exif.SonyMisc1.0x0004")); >From 1119a68a1e90b5a278f4ecc70461bfca786eee0d Mon Sep 17 00:00:00 2001 From: Kevin Backhouse <kevinbackho...@github.com> Date: Sun, 25 Jun 2023 22:23:24 +0100 Subject: [PATCH 2/2] Check if the metadata is NULL. --- src/sonymn_int.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/sonymn_int.cpp b/src/sonymn_int.cpp index 2fe62bdbf..a2cde2282 100644 --- a/src/sonymn_int.cpp +++ b/src/sonymn_int.cpp @@ -827,7 +827,7 @@ std::ostream& SonyMakerNote::printWBShiftABGM(std::ostream& os, const Value& val } std::ostream& SonyMakerNote::printFocusMode2(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; return os; } @@ -854,7 +854,7 @@ std::ostream& SonyMakerNote::printFocusMode2(std::ostream& os, const Value& valu } std::ostream& SonyMakerNote::printAFAreaModeSetting(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; return os; } @@ -891,7 +891,7 @@ std::ostream& SonyMakerNote::printAFAreaModeSetting(std::ostream& os, const Valu } std::ostream& SonyMakerNote::printFlexibleSpotPosition(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 2 || value.typeId() != unsignedShort) { + if (value.count() != 2 || value.typeId() != unsignedShort || !metadata) { os << "(" << value << ")"; return os; } @@ -916,7 +916,7 @@ std::ostream& SonyMakerNote::printFlexibleSpotPosition(std::ostream& os, const V } std::ostream& SonyMakerNote::printAFPointSelected(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; return os; } @@ -967,7 +967,7 @@ std::ostream& SonyMakerNote::printAFPointSelected(std::ostream& os, const Value& } std::ostream& SonyMakerNote::printAFPointsUsed(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.typeId() != unsignedByte) { + if (value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; return os; } @@ -994,7 +994,7 @@ std::ostream& SonyMakerNote::printAFPointsUsed(std::ostream& os, const Value& va } std::ostream& SonyMakerNote::printAFTracking(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedByte) { + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) { os << "(" << value << ")"; return os; } @@ -1297,7 +1297,7 @@ std::ostream& SonyMakerNote::printImageSize(std::ostream& os, const Value& value } std::ostream& SonyMakerNote::printFocusMode(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedShort) { + if (value.count() != 1 || value.typeId() != unsignedShort || !metadata) { os << "(" << value << ")"; return os; } @@ -1314,7 +1314,7 @@ std::ostream& SonyMakerNote::printFocusMode(std::ostream& os, const Value& value } std::ostream& SonyMakerNote::printAFMode(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedShort) { + if (value.count() != 1 || value.typeId() != unsignedShort || !metadata) { os << "(" << value << ")"; return os; } @@ -1336,7 +1336,7 @@ std::ostream& SonyMakerNote::printAFMode(std::ostream& os, const Value& value, c } std::ostream& SonyMakerNote::printFocusMode3(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedShort) { + if (value.count() != 1 || value.typeId() != unsignedShort || !metadata) { os << "(" << value << ")"; return os; } @@ -1353,7 +1353,7 @@ std::ostream& SonyMakerNote::printFocusMode3(std::ostream& os, const Value& valu std::ostream& SonyMakerNote::printHighISONoiseReduction2(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedShort) { + if (value.count() != 1 || value.typeId() != unsignedShort || !metadata) { os << "(" << value << ")"; return os; } @@ -1840,7 +1840,7 @@ std::ostream& SonyMakerNote::printSony2FpFocusMode(std::ostream& os, const Value std::ostream& SonyMakerNote::printSony2FpFocusPosition2(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1) + if (value.count() != 1 || !metadata) os << "(" << value << ")"; else { std::string model; @@ -1944,7 +1944,7 @@ const TagInfo* SonyMakerNote::tagListSonyMisc2b() { std::ostream& SonyMakerNote::printSonyMisc2bLensZoomPosition(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1) + if (value.count() != 1 || !metadata) return os << "(" << value << ")"; std::string model; @@ -1966,7 +1966,7 @@ std::ostream& SonyMakerNote::printSonyMisc2bLensZoomPosition(std::ostream& os, c std::ostream& SonyMakerNote::printSonyMisc2bFocusPosition2(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1) + if (value.count() != 1 || !metadata) return os << "(" << value << ")"; std::string model; @@ -2052,7 +2052,7 @@ const TagInfo* SonyMakerNote::tagListSonyMisc3c() { std::ostream& SonyMakerNote::printSonyMisc3cShotNumberSincePowerUp(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedLong) + if (value.count() != 1 || value.typeId() != unsignedLong || !metadata) return os << "(" << value << ")"; std::string model; @@ -2083,7 +2083,7 @@ std::ostream& SonyMakerNote::printSonyMisc3cSequenceNumber(std::ostream& os, con } std::ostream& SonyMakerNote::printSonyMisc3cQuality2(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedByte) + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) return os << "(" << value << ")"; std::string model; @@ -2108,7 +2108,7 @@ std::ostream& SonyMakerNote::printSonyMisc3cQuality2(std::ostream& os, const Val std::ostream& SonyMakerNote::printSonyMisc3cSonyImageHeight(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedShort) + if (value.count() != 1 || value.typeId() != unsignedShort || !metadata) return os << "(" << value << ")"; std::string model; @@ -2131,7 +2131,7 @@ std::ostream& SonyMakerNote::printSonyMisc3cSonyImageHeight(std::ostream& os, co std::ostream& SonyMakerNote::printSonyMisc3cModelReleaseYear(std::ostream& os, const Value& value, const ExifData* metadata) { - if (value.count() != 1 || value.typeId() != unsignedByte) + if (value.count() != 1 || value.typeId() != unsignedByte || !metadata) return os << "(" << value << ")"; std::string model;