File exiv2-metadata-null-checks.patch of Package exiv2
From 360c6cd41f15baf6d999da12e1fc077180f5da91 Mon Sep 17 00:00:00 2001
From: Kevin Backhouse <kevinbackhouse@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 <kevinbackhouse@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;