Skip to content

Commit 57dbb22

Browse files
committed
Coverity fixes
IB-8899 Signed-off-by: Raul Metsma <raul@metsma.ee>
1 parent 68ec5bf commit 57dbb22

11 files changed

Lines changed: 68 additions & 47 deletions

File tree

src/ASiC_S.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ ASiC_S::ASiC_S(const string &path)
9696
THROW("ASiC-S container does not contain any signatures.");
9797
}
9898

99-
void ASiC_S::addDataFileChecks(const string &fileName, const string &mediaType)
99+
void ASiC_S::addDataFileChecks(string_view fileName, const string &mediaType)
100100
{
101101
ASiContainer::addDataFileChecks(fileName, mediaType);
102102
if(!dataFiles().empty())

src/ASiC_S.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ namespace digidoc
4545
ASiC_S(const std::string &path);
4646
DISABLE_COPY(ASiC_S);
4747

48-
void addDataFileChecks(const std::string &path, const std::string &mediaType) override;
48+
void addDataFileChecks(std::string_view path, const std::string &mediaType) override;
4949
void canSave() final;
5050
void save(const ZipSerialize &s) final;
5151

src/ASiContainer.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ vector<Signature *> ASiContainer::signatures() const
149149
*/
150150
void ASiContainer::addDataFile(const string &path, const string &mediaType)
151151
{
152-
string fileName = File::fileName(path);
152+
auto fileName = File::fileName(path);
153153
addDataFileChecks(fileName, mediaType);
154154
auto nativePath = File::encodeName(path);
155155
auto size = File::fileSize(nativePath);
@@ -165,8 +165,8 @@ void ASiContainer::addDataFile(const string &path, const string &mediaType)
165165
*data << is->rdbuf();
166166
is = std::move(data);
167167
}
168-
d->properties[fileName] = { appInfo(), File::modifiedTime(path), size };
169-
d->documents.push_back(new DataFilePrivate(std::move(is), std::move(fileName), mediaType));
168+
d->properties[string(fileName)] = { appInfo(), File::modifiedTime(path), size };
169+
d->documents.push_back(new DataFilePrivate(std::move(is), string(fileName), mediaType));
170170
}
171171

172172
void ASiContainer::addDataFile(unique_ptr<istream> is, const string &fileName, const string &mediaType)
@@ -177,14 +177,14 @@ void ASiContainer::addDataFile(unique_ptr<istream> is, const string &fileName, c
177177
d->documents.push_back(new DataFilePrivate(std::move(is), fileName, mediaType));
178178
}
179179

180-
void ASiContainer::addDataFileChecks(const string &fileName, const string &mediaType)
180+
void ASiContainer::addDataFileChecks(string_view fileName, const string &mediaType)
181181
{
182182
if(!d->signatures.empty())
183183
THROW("Can not add document to container which has signatures, remove all signatures before adding new document.");
184184
if(fileName == "mimetype")
185185
THROW("mimetype is reserved file.");
186186
if(any_of(d->documents.cbegin(), d->documents.cend(), [&](DataFile *file) { return fileName == file->fileName(); }))
187-
THROW("Document with same file name '%s' already exists.", fileName.c_str());
187+
THROW("Document with same file name '%.*s' already exists.", STR_VIEW_FMT(fileName));
188188
if(mediaType.find('/') == string::npos)
189189
THROW("MediaType does not meet format requirements (RFC2045, section 5.1) '%s'.", mediaType.c_str());
190190
}

src/ASiContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace digidoc
6161
protected:
6262
ASiContainer(std::string_view mimetype);
6363

64-
virtual void addDataFileChecks(const std::string &path, const std::string &mediaType);
64+
virtual void addDataFileChecks(std::string_view path, const std::string &mediaType);
6565
void addDataFilePrivate(DataFile *dataFile);
6666
Signature* addSignature(std::unique_ptr<Signature> &&signature);
6767
virtual void canSave() = 0;

src/DataFile.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ DataFilePrivate::DataFilePrivate(const ZipSerialize &z, string filename, string
114114
(size = r(buf.data(), buf.size())) > 0; currentStreamSize += size)
115115
{
116116
if(!fs->write(buf.data(), size))
117-
THROW("Failed to write '%s' data to stream. Stream size: %d", m_filename.c_str(), currentStreamSize);
117+
THROW("Failed to write '%s' data to stream. Stream size: %zu", m_filename.c_str(), currentStreamSize);
118118
}
119119
m_is = std::move(fs);
120120
}

src/SiVaContainer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ SiVaContainer::SiVaContainer(const string &path, ContainerOpenCB *cb, bool useHa
157157
else if(File::fileExtension(path, {"pdf"}))
158158
{
159159
d->mediaType = "application/pdf";
160-
d->dataFiles.push_back(new DataFilePrivate(std::move(ifs), fileName, "application/pdf"));
160+
d->dataFiles.push_back(new DataFilePrivate(std::move(ifs), string(fileName), "application/pdf"));
161161
}
162162
else if(File::fileExtension(path, {"asice", "sce", "asics", "scs"}))
163163
{

src/SignatureTST.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ struct SignatureTST::Data {
6161
if (auto it = cache->find(method); it != cache->cend()) {
6262
return it->second;
6363
}
64-
return (*cache)[std::move(method)] = digest(Digest(method)).result();
64+
auto result = digest(Digest(method)).result();
65+
return (*cache)[std::move(method)] = std::move(result);
6566
}
6667
};
6768

@@ -82,7 +83,8 @@ SignatureTST::SignatureTST(bool manifest, const ZipSerialize &z, ASiC_S *asicSDo
8283
auto ref = doc/"SigReference";
8384
string uri = util::File::fromUriPath(ref["URI"]);
8485
metadata.emplace_back(std::move(file), std::move(mime), xml.str());
85-
metadata.emplace_back(std::move(uri), string(ref["MimeType"]), z.read(uri));
86+
auto refData = z.read(uri);
87+
metadata.emplace_back(std::move(uri), string(ref["MimeType"]), std::move(refData));
8688
file.clear();
8789

8890
for(auto ref = doc/"DataObjectReference"; ref; ref++)
@@ -172,7 +174,7 @@ void SignatureTST::extendSignatureProfile(Signer *signer)
172174
}, true);
173175
auto i = metadata.insert(metadata.cbegin(), {"META-INF/ASiCArchiveManifest.xml", "text/xml", std::move(data)});
174176
vector<unsigned char> der = TS(i->digest(), signer->userAgent());
175-
metadata.insert(next(i), {tstName, TST_MIMETYPE, string{der.cbegin(), der.cend()}});
177+
metadata.insert(next(i), {std::move(tstName), TST_MIMETYPE, string{der.cbegin(), der.cend()}});
176178
}
177179

178180
X509Cert SignatureTST::TimeStampCertificate() const

src/crypto/PKCS11Signer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,10 @@ static auto PKCS11List(CK_FUNCTION_LIST *f, Args&&... args)
9999
using T = std::remove_pointer_t<std::tuple_element_t<Traits::nargs - 2, typename Traits::arg_types>>;
100100
std::vector<T> result;
101101
CK_ULONG count = 0;
102-
if((f->*Getter)(std::forward<Args>(args)..., static_cast<T*>(nullptr), &count) != CKR_OK || count == 0)
102+
if((f->*Getter)(args..., static_cast<T*>(nullptr), &count) != CKR_OK || count == 0)
103103
return result;
104104
result.resize(size_t(count));
105-
if((f->*Getter)(std::forward<Args>(args)..., result.data(), &count) != CKR_OK)
105+
if((f->*Getter)(args..., result.data(), &count) != CKR_OK)
106106
result.clear();
107107
return result;
108108
}

src/util/File.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ using f_utimbuf = struct utimbuf;
6464

6565
stack<fs::path> File::tempFiles;
6666

67-
static string decodeName(fs::path path)
67+
static string decodeName(const fs::path &path)
6868
{
6969
auto name = path.u8string();
7070
return {reinterpret_cast<const char*>(name.data()), name.size()};
@@ -149,7 +149,7 @@ bool File::fileExtension(string_view path, initializer_list<string_view> list)
149149
/**
150150
* Returns file size
151151
*/
152-
unsigned long File::fileSize(const std::filesystem::path &path) noexcept
152+
unsigned long File::fileSize(const fs::path &path) noexcept
153153
{
154154
error_code ec;
155155
auto result = fs::file_size(path, ec);
@@ -162,7 +162,7 @@ unsigned long File::fileSize(const std::filesystem::path &path) noexcept
162162
* @param path full path of the file.
163163
* @return returns file name from the file full path in UTF-8.
164164
*/
165-
string File::fileName(const string& path)
165+
string_view File::fileName(string_view path) noexcept
166166
{
167167
size_t pos = path.find_last_of("/\\");
168168
return pos == string::npos ? path : path.substr(pos + 1);
@@ -343,8 +343,8 @@ constexpr bool fromHexChar(auto pos, auto end, auto &value)
343343
{
344344
if(distance(pos, end) < 2)
345345
return false;
346-
auto *p = &*pos;
347-
return from_chars(p, p + 2, value, 16).ec == std::errc{};
346+
auto *p = to_address(pos);
347+
return from_chars(p, p + 2, value, 16).ec == errc{};
348348
}
349349

350350
string File::fromUriPath(string_view path)

src/util/File.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ namespace digidoc
4242
static bool fileExists(const std::string& path);
4343
static bool fileExtension(std::string_view path, std::initializer_list<std::string_view> list);
4444
static unsigned long fileSize(const std::filesystem::path &path) noexcept;
45-
static std::string fileName(const std::string& path);
45+
static std::string_view fileName(std::string_view path) noexcept;
4646
static std::string directory(const std::string& path);
4747
static std::string path(std::string dir, std::string_view relativePath);
4848
static std::filesystem::path tempFileName();

0 commit comments

Comments
 (0)