Skip to content

Commit 7ce54d6

Browse files
committed
Coverity fixes
IB-8899 Signed-off-by: Raul Metsma <raul@metsma.ee>
1 parent 26a8ad3 commit 7ce54d6

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
@@ -85,7 +85,7 @@ ASiC_S::ASiC_S(const string &path, bool create)
8585
THROW("ASiC-S container does not contain any signatures.");
8686
}
8787

88-
void ASiC_S::addDataFileChecks(const string &fileName, const string &mediaType)
88+
void ASiC_S::addDataFileChecks(string_view fileName, const string &mediaType)
8989
{
9090
ASiContainer::addDataFileChecks(fileName, mediaType);
9191
if(!dataFiles().empty())

src/ASiC_S.h

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

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

src/ASiContainer.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ vector<Signature *> ASiContainer::signatures() const
146146
*/
147147
void ASiContainer::addDataFile(const string &path, const string &mediaType)
148148
{
149-
string fileName = File::fileName(path);
149+
auto fileName = File::fileName(path);
150150
addDataFileChecks(fileName, mediaType);
151151
auto nativePath = File::encodeName(path);
152152
auto size = File::fileSize(nativePath);
@@ -162,8 +162,8 @@ void ASiContainer::addDataFile(const string &path, const string &mediaType)
162162
*data << is->rdbuf();
163163
is = std::move(data);
164164
}
165-
d->properties[fileName] = { appInfo(), File::modifiedTime(path), size };
166-
d->documents.push_back(new DataFilePrivate(std::move(is), std::move(fileName), mediaType));
165+
d->properties[string(fileName)] = { appInfo(), File::modifiedTime(path), size };
166+
d->documents.push_back(new DataFilePrivate(std::move(is), string(fileName), mediaType));
167167
}
168168

169169
void ASiContainer::addDataFile(unique_ptr<istream> is, const string &fileName, const string &mediaType)
@@ -197,15 +197,15 @@ void ASiContainer::validateDataFilePath(string_view fileName)
197197
}
198198
}
199199

200-
void ASiContainer::addDataFileChecks(const string &fileName, const string &mediaType)
200+
void ASiContainer::addDataFileChecks(string_view fileName, const string &mediaType)
201201
{
202202
if(!d->signatures.empty())
203203
THROW("Can not add document to container which has signatures, remove all signatures before adding new document.");
204204
if(fileName == "mimetype")
205205
THROW("mimetype is reserved file.");
206206
validateDataFileName(fileName);
207207
if(any_of(d->documents.cbegin(), d->documents.cend(), [&](DataFile *file) { return fileName == file->fileName(); }))
208-
THROW("Document with same file name '%s' already exists.", fileName.c_str());
208+
THROW("Document with same file name '%.*s' already exists.", STR_VIEW_FMT(fileName));
209209
if(mediaType.find('/') == string::npos)
210210
THROW("MediaType does not meet format requirements (RFC2045, section 5.1) '%s'.", mediaType.c_str());
211211
}

src/ASiContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ namespace digidoc
6262
std::string path() const override;
6363
ASiContainer(const std::string &path, std::string_view mimetype);
6464

65-
virtual void addDataFileChecks(const std::string &path, const std::string &mediaType);
65+
virtual void addDataFileChecks(std::string_view path, const std::string &mediaType);
6666
void addDataFilePrivate(const ZipSerialize &z, std::string_view filename, std::string_view mediatype);
6767
Signature* addSignature(std::unique_ptr<Signature> &&signature);
6868
virtual void canSave() = 0;

src/DataFile.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ DataFilePrivate::DataFilePrivate(const ZipSerialize &z, string filename, string
119119
if(currentStreamSize + size > r.size)
120120
THROW("ZIP entry actual size exceeds uncompressed_size %zu", r.size);
121121
if(!fs->write(buf.data(), size))
122-
THROW("Failed to write '%s' data to stream. Stream size: %d", m_filename.c_str(), currentStreamSize);
122+
THROW("Failed to write '%s' data to stream. Stream size: %zu", m_filename.c_str(), currentStreamSize);
123123
}
124124
if(!fs->flush())
125125
THROW("Failed to flush '%s' data to temporary file.", m_filename.c_str());

src/SiVaContainer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ SiVaContainer::SiVaContainer(const string &path, ContainerOpenCB *cb, bool useHa
118118
else if(File::fileExtension(path, {"pdf"}))
119119
{
120120
d->mediaType = "application/pdf";
121-
d->dataFiles.push_back(new DataFilePrivate(std::move(ifs), fileName, "application/pdf"));
121+
d->dataFiles.push_back(new DataFilePrivate(std::move(ifs), string(fileName), "application/pdf"));
122122
}
123123
else if(File::fileExtension(path, {"asice", "sce", "asics", "scs"}))
124124
{

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
@@ -63,7 +63,7 @@ using f_utimbuf = struct utimbuf;
6363
#endif
6464

6565

66-
static string decodeName(fs::path path)
66+
static string decodeName(const fs::path &path)
6767
{
6868
auto name = path.u8string();
6969
return {reinterpret_cast<const char*>(name.data()), name.size()};
@@ -148,7 +148,7 @@ bool File::fileExtension(string_view path, initializer_list<string_view> list)
148148
/**
149149
* Returns file size
150150
*/
151-
unsigned long File::fileSize(const std::filesystem::path &path) noexcept
151+
unsigned long File::fileSize(const fs::path &path) noexcept
152152
{
153153
error_code ec;
154154
auto result = fs::file_size(path, ec);
@@ -161,7 +161,7 @@ unsigned long File::fileSize(const std::filesystem::path &path) noexcept
161161
* @param path full path of the file.
162162
* @return returns file name from the file full path in UTF-8.
163163
*/
164-
string File::fileName(const string& path)
164+
string_view File::fileName(string_view path) noexcept
165165
{
166166
size_t pos = path.find_last_of("/\\");
167167
return pos == string::npos ? path : path.substr(pos + 1);
@@ -330,8 +330,8 @@ constexpr bool fromHexChar(auto pos, auto end, auto &value)
330330
{
331331
if(distance(pos, end) < 2)
332332
return false;
333-
auto *p = &*pos;
334-
return from_chars(p, p + 2, value, 16).ec == std::errc{};
333+
auto *p = to_address(pos);
334+
return from_chars(p, p + 2, value, 16).ec == errc{};
335335
}
336336

337337
string File::fromUriPath(string_view path)

src/util/File.h

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

0 commit comments

Comments
 (0)