diff options
author | Albert Astals Cid <aacid@kde.org> | 2022-01-03 14:51:10 +0100 |
---|---|---|
committer | Albert Astals Cid <aacid@kde.org> | 2022-01-04 13:59:29 +0100 |
commit | 5f52816b85c82eb41fdd4f4bf4020f8a679e931d (patch) | |
tree | e8c2f816ca7a32d3cf7c93a297b46861f0eba03e | |
parent | 9f5e62f4c4fb69338b66f4a590cba6f2926c3a31 (diff) |
Make FormFieldSignature::getCheckedSignature return an optional
-rw-r--r-- | poppler/Form.cc | 12 | ||||
-rw-r--r-- | poppler/Form.h | 7 | ||||
-rw-r--r-- | qt5/src/poppler-form.cc | 5 | ||||
-rw-r--r-- | qt6/src/poppler-form.cc | 5 | ||||
-rw-r--r-- | utils/pdfsig.cc | 6 |
5 files changed, 16 insertions, 19 deletions
diff --git a/poppler/Form.cc b/poppler/Form.cc index f42801b4..f2b4815a 100644 --- a/poppler/Form.cc +++ b/poppler/Form.cc @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2006-2008 Julien Rebetez <julienr@svn.gnome.org> -// Copyright 2007-2012, 2015-2021 Albert Astals Cid <aacid@kde.org> +// Copyright 2007-2012, 2015-2022 Albert Astals Cid <aacid@kde.org> // Copyright 2007-2008, 2011 Carlos Garcia Campos <carlosgc@gnome.org> // Copyright 2007, 2013, 2016, 2019 Adrian Johnson <ajohnson@redneon.com> // Copyright 2007 Iñigo Martínez <inigomartinez@gmail.com> @@ -815,7 +815,7 @@ std::vector<Goffset> FormWidgetSignature::getSignedRangeBounds() const return static_cast<FormFieldSignature *>(field)->getSignedRangeBounds(); } -GooString *FormWidgetSignature::getCheckedSignature(Goffset *checkedFileSize) +std::optional<GooString> FormWidgetSignature::getCheckedSignature(Goffset *checkedFileSize) { return static_cast<FormFieldSignature *>(field)->getCheckedSignature(checkedFileSize); } @@ -2241,7 +2241,7 @@ std::vector<Goffset> FormFieldSignature::getSignedRangeBounds() const return range_vec; } -GooString *FormFieldSignature::getCheckedSignature(Goffset *checkedFileSize) +std::optional<GooString> FormFieldSignature::getCheckedSignature(Goffset *checkedFileSize) { Goffset start = 0; Goffset end = 0; @@ -2274,7 +2274,7 @@ GooString *FormFieldSignature::getCheckedSignature(Goffset *checkedFileSize) do { c1 = stream->getChar(); if (c1 == EOF) - return nullptr; + return {}; gstr.append(static_cast<char>(c1)); } while (++pos < len); if (gstr.getChar(0) == '3' && gstr.getChar(1) == '0') { @@ -2329,12 +2329,12 @@ GooString *FormFieldSignature::getCheckedSignature(Goffset *checkedFileSize) len = 0; } if (len > 0) { - return new GooString(&gstr, 0, len); + return GooString(&gstr, 0, len); } } } } - return nullptr; + return {}; } void FormFieldSignature::print(int indent) diff --git a/poppler/Form.h b/poppler/Form.h index 9f98c02e..a5ca8fdf 100644 --- a/poppler/Form.h +++ b/poppler/Form.h @@ -6,7 +6,7 @@ // // Copyright 2006 Julien Rebetez <julienr@svn.gnome.org> // Copyright 2007, 2008, 2011 Carlos Garcia Campos <carlosgc@gnome.org> -// Copyright 2007-2010, 2012, 2015-2021 Albert Astals Cid <aacid@kde.org> +// Copyright 2007-2010, 2012, 2015-2022 Albert Astals Cid <aacid@kde.org> // Copyright 2010 Mark Riedesel <mark@klowner.com> // Copyright 2011 Pino Toscano <pino@kde.org> // Copyright 2012 Fabio D'Urso <fabiodurso@hotmail.it> @@ -38,6 +38,7 @@ #include <ctime> +#include <optional> #include <set> #include <vector> @@ -316,7 +317,7 @@ public: // checks the length encoding of the signature and returns the hex encoded signature // if the check passed (and the checked file size as output parameter in checkedFileSize) // otherwise a nullptr is returned - GooString *getCheckedSignature(Goffset *checkedFileSize); + std::optional<GooString> getCheckedSignature(Goffset *checkedFileSize); const GooString *getSignature() const; @@ -607,7 +608,7 @@ public: // checks the length encoding of the signature and returns the hex encoded signature // if the check passed (and the checked file size as output parameter in checkedFileSize) // otherwise a nullptr is returned - GooString *getCheckedSignature(Goffset *checkedFileSize); + std::optional<GooString> getCheckedSignature(Goffset *checkedFileSize); ~FormFieldSignature() override; Object *getByteRange() { return &byte_range; } diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc index 43ce0546..36f7b451 100644 --- a/qt5/src/poppler-form.cc +++ b/qt5/src/poppler-form.cc @@ -1,6 +1,6 @@ /* poppler-form.h: qt interface to poppler * Copyright (C) 2007-2008, 2011, Pino Toscano <pino@kde.org> - * Copyright (C) 2008, 2011, 2012, 2015-2021 Albert Astals Cid <aacid@kde.org> + * Copyright (C) 2008, 2011, 2012, 2015-2022 Albert Astals Cid <aacid@kde.org> * Copyright (C) 2011 Carlos Garcia Campos <carlosgc@gnome.org> * Copyright (C) 2012, Adam Reichold <adamreichold@myopera.com> * Copyright (C) 2016, Hanno Meyer-Thurow <h.mth@web.de> @@ -1049,11 +1049,10 @@ SignatureValidationInfo FormFieldSignature::validate(int opt, const QDateTime &v priv->range_bounds.append(bound); } } - GooString *checkedSignature = fws->getCheckedSignature(&priv->docLength); + const std::optional<GooString> checkedSignature = fws->getCheckedSignature(&priv->docLength); if (priv->range_bounds.size() == 4 && checkedSignature) { priv->signature = QByteArray::fromHex(checkedSignature->c_str()); } - delete checkedSignature; return SignatureValidationInfo(priv); } diff --git a/qt6/src/poppler-form.cc b/qt6/src/poppler-form.cc index 1ed73fb8..d24e3892 100644 --- a/qt6/src/poppler-form.cc +++ b/qt6/src/poppler-form.cc @@ -1,6 +1,6 @@ /* poppler-form.h: qt interface to poppler * Copyright (C) 2007-2008, 2011, Pino Toscano <pino@kde.org> - * Copyright (C) 2008, 2011, 2012, 2015-2021 Albert Astals Cid <aacid@kde.org> + * Copyright (C) 2008, 2011, 2012, 2015-2022 Albert Astals Cid <aacid@kde.org> * Copyright (C) 2011 Carlos Garcia Campos <carlosgc@gnome.org> * Copyright (C) 2012, Adam Reichold <adamreichold@myopera.com> * Copyright (C) 2016, Hanno Meyer-Thurow <h.mth@web.de> @@ -1049,11 +1049,10 @@ SignatureValidationInfo FormFieldSignature::validate(int opt, const QDateTime &v priv->range_bounds.append(bound); } } - GooString *checkedSignature = fws->getCheckedSignature(&priv->docLength); + const std::optional<GooString> checkedSignature = fws->getCheckedSignature(&priv->docLength); if (priv->range_bounds.size() == 4 && checkedSignature) { priv->signature = QByteArray::fromHex(checkedSignature->c_str()); } - delete checkedSignature; return SignatureValidationInfo(priv); } diff --git a/utils/pdfsig.cc b/utils/pdfsig.cc index a3dee865..fd96eaaa 100644 --- a/utils/pdfsig.cc +++ b/utils/pdfsig.cc @@ -375,9 +375,8 @@ int main(int argc, char *argv[]) FormFieldSignature *ffs = signatures.at(signatureNumber - 1); Goffset file_size = 0; - GooString *sig = ffs->getCheckedSignature(&file_size); + const std::optional<GooString> sig = ffs->getCheckedSignature(&file_size); if (sig) { - delete sig; printf("Signature number %d is already signed\n", signatureNumber); return 2; } @@ -468,13 +467,12 @@ int main(int argc, char *argv[]) if (ranges.size() == 4) { printf(" - Signed Ranges: [%lld - %lld], [%lld - %lld]\n", ranges[0], ranges[1], ranges[2], ranges[3]); Goffset checked_file_size; - GooString *signature = signatures.at(i)->getCheckedSignature(&checked_file_size); + const std::optional<GooString> signature = signatures.at(i)->getCheckedSignature(&checked_file_size); if (signature && checked_file_size == ranges[3]) { printf(" - Total document signed\n"); } else { printf(" - Not total document signed\n"); } - delete signature; } printf(" - Signature Validation: %s\n", getReadableSigState(sig_info->getSignatureValStatus())); gfree(time_str); |