New Defects reported by Coverity Scan for digiKam
scan-admin-S5/EvlXga/RWk0Htik3J/[email protected] Tue, 14 Jul 2026 15:43:22 +0000 (UTC)
| Newsgroups | gmane.comp.kde.digikam.devel |
|---|---|
| Message-ID | <[email protected]> |
----==_mimepart_6a56591a29f75_e0b9f2c20652419983548
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi,
Please find the latest report on new defect(s) introduced to digiKam found with Coverity Scan.
12 new defect(s) introduced to digiKam found with Coverity Scan.
45 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
New defect(s) Reported-by: Coverity Scan
Showing 12 of 12 defect(s)
** CID 1696747: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201 in Marble::PlanetarySats::setSatFile(const char *)()
_____________________________________________________________________________________________
*** CID 1696747: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201 in Marble::PlanetarySats::setSatFile(const char *)()
195 min = 0;
196 };
197 }
198
199 void PlanetarySats::setSatFile(const char* const fname)
200 {
>>> CID 1696747: Memory - illegal accesses (BUFFER_SIZE)
>>> Calling "strncpy" with a maximum size argument of 205 bytes on destination array "this->pls_satelmfl" of size 205 bytes might leave the destination string unterminated.
201 strncpy(pls_satelmfl, fname, sizeof(pls_satelmfl));
202 }
203
204 void PlanetarySats::setStateVector(double mjd, double x, double y, double z, double vx, double vy, double vz)
205 {
206 pls_rep[0] = x;
** CID 1696746: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400 in Marble::PlanetarySats::setPlanet(const char *)()
_____________________________________________________________________________________________
*** CID 1696746: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400 in Marble::PlanetarySats::setPlanet(const char *)()
394 return nst;
395 }
396
397 void PlanetarySats::setPlanet(const char* const pname)
398 {
399 pls_moonflg = false;
>>> CID 1696746: Memory - illegal accesses (BUFFER_SIZE)
>>> Calling "strncpy" with a maximum size argument of 40 bytes on destination array "this->pls_plntname" of size 40 bytes might leave the destination string unterminated.
400 strncpy(pls_plntname, pname, sizeof(pls_plntname));
401
402 if (strncmp("Mars", pname, 4) == 0)
403 {
404 getMars();
405 }
** CID 1696745: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353 in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
_____________________________________________________________________________________________
*** CID 1696745: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 332 in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
326
327 pReader->offset = 0;
328 }
329
330 if (fread(&(ds->type), 1, 1, pReader->f) == 0)
331 {
>>> CID 1696745: (USE_AFTER_FREE)
>>> Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
332 o5mreader_setError(pReader,
333 O5MREADER_ERR_CODE_UNEXPECTED_END_OF_FILE,
334 NULL);
335
336 return O5MREADER_ITERATE_RET_ERR;
337 }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353 in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
347 }
348 else if (0xf0 == ds->type)
349 {
350 }
351 else
352 {
>>> CID 1696745: (USE_AFTER_FREE)
>>> Calling "o5mreader_readUInt" frees pointer "pReader->errMsg" which has already been freed.
353 if (o5mreader_readUInt(pReader, &pReader->offset) == O5MREADER_RET_ERR)
354 {
355 return O5MREADER_ITERATE_RET_ERR;
356 }
357
358 pReader->current = ftell(pReader->f);
** CID 1696744: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
_____________________________________________________________________________________________
*** CID 1696744: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/properties/itempropertiessidebardb.cpp: 1014 in Digikam::ItemPropertiesSideBarDB::calculateItemsMultithreaded()()
1008 // -- Total Album Items Properties
1009
1010 Q_EMIT signalSetTotalCount(d->allInfos.count());
1011
1012 qint64 totalFileSize = selectionFileSize;
1013 ItemInfoList totalGroups = selectionGroups;
>>> CID 1696744: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
>>> "selectionMimes" is copied in call to copy constructor for class "QHash<QString, int>", when it could be moved instead.
1014 QHash<QString, int> totalMimes = selectionMimes;
1015
1016 for (const ItemInfo& info : std::as_const(restInfos))
1017 {
1018 if (d->selectedItemsTask.isCanceled())
1019 {
** CID 1696743: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
_____________________________________________________________________________________________
*** CID 1696743: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472 {
473 pReader->canIterateTags = 0;
474 return O5MREADER_ITERATE_RET_DONE;
475 }
476
477 mtx.lock();
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
478 O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
479 mtx.unlock();
480
481 if (strPair == O5MREADER_RET_ERR)
482 {
483 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472 {
473 pReader->canIterateTags = 0;
474 return O5MREADER_ITERATE_RET_DONE;
475 }
476
477 mtx.lock();
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
478 O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
479 mtx.unlock();
480
481 if (strPair == O5MREADER_RET_ERR)
482 {
483 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 456 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
450 return O5MREADER_ITERATE_RET_ERR;
451 }
452 }
453
454 if (pReader->canIterateNds)
455 {
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_skipNds" frees pointer "pReader->errMsg" which has already been freed.
456 if (o5mreader_skipNds(pReader) == O5MREADER_ITERATE_RET_ERR)
457 {
458 return O5MREADER_ITERATE_RET_ERR;
459 }
460 }
461
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458 return O5MREADER_ITERATE_RET_ERR;
459 }
460 }
461
462 if (!pReader->canIterateTags)
463 {
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
464 o5mreader_setError(pReader,
465 O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466 NULL
467 );
468 return O5MREADER_ITERATE_RET_ERR;
469 }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458 return O5MREADER_ITERATE_RET_ERR;
459 }
460 }
461
462 if (!pReader->canIterateTags)
463 {
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
464 o5mreader_setError(pReader,
465 O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466 NULL
467 );
468 return O5MREADER_ITERATE_RET_ERR;
469 }
** CID 1696742: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
_____________________________________________________________________________________________
*** CID 1696742: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/database/haar/haariface.cpp: 436 in Digikam::HaarIface::bestMatchesWithThreshold(long long, Digikam::Haar::SignatureData *, double, double, const QList<int> &, Digikam::HaarIface::DuplicatesSearchRestrictions, Digikam::HaarIface::SketchType)()
430 {
431 qCDebug(DIGIKAM_DATABASE_LOG) << it.key() << QString::number(it.value() * 100) + QLatin1Char('%');
432 }
433 }
434
435 result.first = avgPercentage;
>>> CID 1696742: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
>>> "bestResults" is copied in call to copy assignment for class "QMap<long long, double>", when it could be moved instead.
436 result.second = bestResults;
437
438 return result;
439 }
440
441 bool HaarIface::fulfillsRestrictions(qlonglong imageId, int albumId,
** CID 1696741: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411 in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
_____________________________________________________________________________________________
*** CID 1696741: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 427 in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
421 if (o5mreader_thereAreNoMoreData(pReader))
422 {
423 return O5MREADER_ITERATE_RET_DONE;
424 }
425
426 mtx.lock();
>>> CID 1696741: (USE_AFTER_FREE)
>>> Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
427 O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
428 mtx.unlock();
429
430 if (strPair == O5MREADER_ITERATE_RET_ERR)
431 {
432 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411 in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
405 }
406
407 ds->version = (uint32_t)tmp;
408
409 if (tmp)
410 {
>>> CID 1696741: (USE_AFTER_FREE)
>>> Calling "o5mreader_readUInt" frees pointer "pReader->errMsg" which has already been freed.
411 if (o5mreader_readUInt(pReader, &tmp) == O5MREADER_ITERATE_RET_ERR)
412 {
413 return O5MREADER_ITERATE_RET_ERR;
414 }
415
416 if (o5mreader_readInt(pReader, &tmp) == O5MREADER_ITERATE_RET_ERR)
** CID 1662751: Integer handling issues (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850 in std::__format::__write_padded<std::__format::_Sink_iter<wchar_t>, wchar_t>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)()
_____________________________________________________________________________________________
*** CID 1662751: Integer handling issues (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850 in std::__format::__write_padded<std::__format::_Sink_iter<wchar_t>, wchar_t>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)()
844 {
845 // Encode fill char as multiple code units of type _CharT.
846 const char32_t __arr[1]{ __fill_char };
847 _Utf_view<_CharT, const char32_t(&)[1]> __v(__arr);
848 basic_string<_CharT> __padstr(__v.begin(), __v.end());
849 __padding = __padstr;
>>> CID 1662751: Integer handling issues (INTEGER_OVERFLOW)
>>> Expression "__l--", where "__l" is known to be equal to 0, underflows the type of "__l--", which is type "std::size_t".
850 while (__l-- > 0)
851 __out = __format::__write(std::move(__out), __padding);
852 __out = __format::__write(std::move(__out), __str);
853 while (__r-- > 0)
854 __out = __format::__write(std::move(__out), __padding);
855 return __out;
** CID 1662731: Uninitialized variables (MISSING_RETURN)
/usr/include/c++/15/format: 1686 in std::__format::__formatter_int<wchar_t>::_S_character_width(wchar_t)()
_____________________________________________________________________________________________
*** CID 1662731: Uninitialized variables (MISSING_RETURN)
/usr/include/c++/15/format: 1686 in std::__format::__formatter_int<wchar_t>::_S_character_width(wchar_t)()
1680
1681 [[__gnu__::__always_inline__]]
1682 static size_t
1683 _S_character_width(_CharT __c)
1684 {
1685 // N.B. single byte cannot encode charcter of width greater than 1
>>> CID 1662731: Uninitialized variables (MISSING_RETURN)
>>> Arriving at the end of a function without returning a value.
1686 if constexpr (sizeof(_CharT) > 1u &&
1687 __unicode::__literal_encoding_is_unicode<_CharT>())
1688 return __unicode::__field_width(__c);
1689 else
1690 return 1u;
1691 }
** CID 1662730: (MISSING_RETURN)
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
_____________________________________________________________________________________________
*** CID 1662730: (MISSING_RETURN)
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
1411 #endif
1412
1413 private:
1414 static size_t
1415 _S_trunc(basic_string_view<_CharT>& __s, size_t __prec)
1416 {
>>> CID 1662730: (MISSING_RETURN)
>>> Arriving at the end of a function without returning a value.
1417 if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
1418 {
1419 if (__prec != basic_string_view<_CharT>::npos)
1420 return __unicode::__truncate(__s, __prec);
1421 else
1422 return __unicode::__field_width(__s);
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
1411 #endif
1412
1413 private:
1414 static size_t
1415 _S_trunc(basic_string_view<_CharT>& __s, size_t __prec)
1416 {
>>> CID 1662730: (MISSING_RETURN)
>>> Arriving at the end of a function without returning a value.
1417 if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
1418 {
1419 if (__prec != basic_string_view<_CharT>::npos)
1420 return __unicode::__truncate(__s, __prec);
1421 else
1422 return __unicode::__field_width(__s);
** CID 1662727: (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
_____________________________________________________________________________________________
*** CID 1662727: (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
** CID 1662584: (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_image_table_data>, std::allocator<std::pair<const dng_fingerprint, dng_image_table_data>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_image_table_data>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>, std::allocator<std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, std::shared_ptr<dng_bmff_box>>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_string, std::pair<const dng_string, dng_semantic_mask>, std::allocator<std::pair<const dng_string, dng_semantic_mask>>, std::__detail::_Select1st, std::equal_to<dng_string>, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_string, dng_semantic_mask>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>, std::allocator<std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_packed_image_table_cache::entry_t>>(T1 &&...)()
_____________________________________________________________________________________________
*** CID 1662584: (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_image_table_data>, std::allocator<std::pair<const dng_fingerprint, dng_image_table_data>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_image_table_data>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>, std::allocator<std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, std::shared_ptr<dng_bmff_box>>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_string, std::pair<const dng_string, dng_semantic_mask>, std::allocator<std::pair<const dng_string, dng_semantic_mask>>, std::__detail::_Select1st, std::equal_to<dng_string>, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_string, dng_semantic_mask>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>, std::allocator<std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_packed_image_table_cache::entry_t>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://scan.coverity.com/projects/digikam?tab=overview
----==_mimepart_6a56591a29f75_e0b9f2c20652419983548
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>New Defects Reported - digiKam</title>
<style>
body { font-family: Arial, sans-serif; color: #222; line-height: 1.6; }
.button {
display: inline-block;
padding: 10px 20px;
margin: 20px 0;
font-size: 16px;
color: #fff !important;
background-color: #0056b3;
text-decoration: none;
border-radius: 5px;
}
pre {
background: #f8f9fa;
padding: 10px;
border-radius: 5px;
font-size: 14px;
overflow-x: auto;
}
</style>
</head>
<body>
<p>Hi,</p>
<p>
Please find the latest report on new defect(s) introduced to <strong>digiKam</strong>
found with Coverity Scan.
</p>
<ul>
<li><strong>New Defects Found:</strong> 12</li>
<li>
45 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
</li>
<li><strong>Defects Shown:</strong> Showing 12 of 12 defect(s)</li>
</ul>
<h3>Defect Details</h3>
<pre>
** CID 1696747: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201 in Marble::PlanetarySats::setSatFile(const char *)()
_____________________________________________________________________________________________
*** CID 1696747: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201 in Marble::PlanetarySats::setSatFile(const char *)()
195 min = 0;
196 };
197 }
198
199 void PlanetarySats::setSatFile(const char* const fname)
200 {
>>> CID 1696747: Memory - illegal accesses (BUFFER_SIZE)
>>> Calling "strncpy" with a maximum size argument of 205 bytes on destination array "this->pls_satelmfl" of size 205 bytes might leave the destination string unterminated.
201 strncpy(pls_satelmfl, fname, sizeof(pls_satelmfl));
202 }
203
204 void PlanetarySats::setStateVector(double mjd, double x, double y, double z, double vx, double vy, double vz)
205 {
206 pls_rep[0] = x;
** CID 1696746: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400 in Marble::PlanetarySats::setPlanet(const char *)()
_____________________________________________________________________________________________
*** CID 1696746: Memory - illegal accesses (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400 in Marble::PlanetarySats::setPlanet(const char *)()
394 return nst;
395 }
396
397 void PlanetarySats::setPlanet(const char* const pname)
398 {
399 pls_moonflg = false;
>>> CID 1696746: Memory - illegal accesses (BUFFER_SIZE)
>>> Calling "strncpy" with a maximum size argument of 40 bytes on destination array "this->pls_plntname" of size 40 bytes might leave the destination string unterminated.
400 strncpy(pls_plntname, pname, sizeof(pls_plntname));
401
402 if (strncmp("Mars", pname, 4) == 0)
403 {
404 getMars();
405 }
** CID 1696745: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353 in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
_____________________________________________________________________________________________
*** CID 1696745: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 332 in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
326
327 pReader->offset = 0;
328 }
329
330 if (fread(&(ds->type), 1, 1, pReader->f) == 0)
331 {
>>> CID 1696745: (USE_AFTER_FREE)
>>> Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
332 o5mreader_setError(pReader,
333 O5MREADER_ERR_CODE_UNEXPECTED_END_OF_FILE,
334 NULL);
335
336 return O5MREADER_ITERATE_RET_ERR;
337 }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353 in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
347 }
348 else if (0xf0 == ds->type)
349 {
350 }
351 else
352 {
>>> CID 1696745: (USE_AFTER_FREE)
>>> Calling "o5mreader_readUInt" frees pointer "pReader->errMsg" which has already been freed.
353 if (o5mreader_readUInt(pReader, &pReader->offset) == O5MREADER_RET_ERR)
354 {
355 return O5MREADER_ITERATE_RET_ERR;
356 }
357
358 pReader->current = ftell(pReader->f);
** CID 1696744: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
_____________________________________________________________________________________________
*** CID 1696744: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/properties/itempropertiessidebardb.cpp: 1014 in Digikam::ItemPropertiesSideBarDB::calculateItemsMultithreaded()()
1008 // -- Total Album Items Properties
1009
1010 Q_EMIT signalSetTotalCount(d->allInfos.count());
1011
1012 qint64 totalFileSize = selectionFileSize;
1013 ItemInfoList totalGroups = selectionGroups;
>>> CID 1696744: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
>>> "selectionMimes" is copied in call to copy constructor for class "QHash<QString, int>", when it could be moved instead.
1014 QHash<QString, int> totalMimes = selectionMimes;
1015
1016 for (const ItemInfo& info : std::as_const(restInfos))
1017 {
1018 if (d->selectedItemsTask.isCanceled())
1019 {
** CID 1696743: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
_____________________________________________________________________________________________
*** CID 1696743: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472 {
473 pReader->canIterateTags = 0;
474 return O5MREADER_ITERATE_RET_DONE;
475 }
476
477 mtx.lock();
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
478 O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
479 mtx.unlock();
480
481 if (strPair == O5MREADER_RET_ERR)
482 {
483 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472 {
473 pReader->canIterateTags = 0;
474 return O5MREADER_ITERATE_RET_DONE;
475 }
476
477 mtx.lock();
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
478 O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
479 mtx.unlock();
480
481 if (strPair == O5MREADER_RET_ERR)
482 {
483 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 456 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
450 return O5MREADER_ITERATE_RET_ERR;
451 }
452 }
453
454 if (pReader->canIterateNds)
455 {
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_skipNds" frees pointer "pReader->errMsg" which has already been freed.
456 if (o5mreader_skipNds(pReader) == O5MREADER_ITERATE_RET_ERR)
457 {
458 return O5MREADER_ITERATE_RET_ERR;
459 }
460 }
461
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458 return O5MREADER_ITERATE_RET_ERR;
459 }
460 }
461
462 if (!pReader->canIterateTags)
463 {
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
464 o5mreader_setError(pReader,
465 O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466 NULL
467 );
468 return O5MREADER_ITERATE_RET_ERR;
469 }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464 in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458 return O5MREADER_ITERATE_RET_ERR;
459 }
460 }
461
462 if (!pReader->canIterateTags)
463 {
>>> CID 1696743: (USE_AFTER_FREE)
>>> Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
464 o5mreader_setError(pReader,
465 O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466 NULL
467 );
468 return O5MREADER_ITERATE_RET_ERR;
469 }
** CID 1696742: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
_____________________________________________________________________________________________
*** CID 1696742: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/database/haar/haariface.cpp: 436 in Digikam::HaarIface::bestMatchesWithThreshold(long long, Digikam::Haar::SignatureData *, double, double, const QList<int> &, Digikam::HaarIface::DuplicatesSearchRestrictions, Digikam::HaarIface::SketchType)()
430 {
431 qCDebug(DIGIKAM_DATABASE_LOG) << it.key() << QString::number(it.value() * 100) + QLatin1Char('%');
432 }
433 }
434
435 result.first = avgPercentage;
>>> CID 1696742: Performance inefficiencies (COPY_INSTEAD_OF_MOVE)
>>> "bestResults" is copied in call to copy assignment for class "QMap<long long, double>", when it could be moved instead.
436 result.second = bestResults;
437
438 return result;
439 }
440
441 bool HaarIface::fulfillsRestrictions(qlonglong imageId, int albumId,
** CID 1696741: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411 in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
_____________________________________________________________________________________________
*** CID 1696741: (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 427 in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
421 if (o5mreader_thereAreNoMoreData(pReader))
422 {
423 return O5MREADER_ITERATE_RET_DONE;
424 }
425
426 mtx.lock();
>>> CID 1696741: (USE_AFTER_FREE)
>>> Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
427 O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
428 mtx.unlock();
429
430 if (strPair == O5MREADER_ITERATE_RET_ERR)
431 {
432 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411 in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
405 }
406
407 ds->version = (uint32_t)tmp;
408
409 if (tmp)
410 {
>>> CID 1696741: (USE_AFTER_FREE)
>>> Calling "o5mreader_readUInt" frees pointer "pReader->errMsg" which has already been freed.
411 if (o5mreader_readUInt(pReader, &tmp) == O5MREADER_ITERATE_RET_ERR)
412 {
413 return O5MREADER_ITERATE_RET_ERR;
414 }
415
416 if (o5mreader_readInt(pReader, &tmp) == O5MREADER_ITERATE_RET_ERR)
** CID 1662751: Integer handling issues (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850 in std::__format::__write_padded<std::__format::_Sink_iter<wchar_t>, wchar_t>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)()
_____________________________________________________________________________________________
*** CID 1662751: Integer handling issues (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850 in std::__format::__write_padded<std::__format::_Sink_iter<wchar_t>, wchar_t>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)()
844 {
845 // Encode fill char as multiple code units of type _CharT.
846 const char32_t __arr[1]{ __fill_char };
847 _Utf_view<_CharT, const char32_t(&)[1]> __v(__arr);
848 basic_string<_CharT> __padstr(__v.begin(), __v.end());
849 __padding = __padstr;
>>> CID 1662751: Integer handling issues (INTEGER_OVERFLOW)
>>> Expression "__l--", where "__l" is known to be equal to 0, underflows the type of "__l--", which is type "std::size_t".
850 while (__l-- > 0)
851 __out = __format::__write(std::move(__out), __padding);
852 __out = __format::__write(std::move(__out), __str);
853 while (__r-- > 0)
854 __out = __format::__write(std::move(__out), __padding);
855 return __out;
** CID 1662731: Uninitialized variables (MISSING_RETURN)
/usr/include/c++/15/format: 1686 in std::__format::__formatter_int<wchar_t>::_S_character_width(wchar_t)()
_____________________________________________________________________________________________
*** CID 1662731: Uninitialized variables (MISSING_RETURN)
/usr/include/c++/15/format: 1686 in std::__format::__formatter_int<wchar_t>::_S_character_width(wchar_t)()
1680
1681 [[__gnu__::__always_inline__]]
1682 static size_t
1683 _S_character_width(_CharT __c)
1684 {
1685 // N.B. single byte cannot encode charcter of width greater than 1
>>> CID 1662731: Uninitialized variables (MISSING_RETURN)
>>> Arriving at the end of a function without returning a value.
1686 if constexpr (sizeof(_CharT) > 1u &&
1687 __unicode::__literal_encoding_is_unicode<_CharT>())
1688 return __unicode::__field_width(__c);
1689 else
1690 return 1u;
1691 }
** CID 1662730: (MISSING_RETURN)
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
_____________________________________________________________________________________________
*** CID 1662730: (MISSING_RETURN)
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
1411 #endif
1412
1413 private:
1414 static size_t
1415 _S_trunc(basic_string_view<_CharT>& __s, size_t __prec)
1416 {
>>> CID 1662730: (MISSING_RETURN)
>>> Arriving at the end of a function without returning a value.
1417 if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
1418 {
1419 if (__prec != basic_string_view<_CharT>::npos)
1420 return __unicode::__truncate(__s, __prec);
1421 else
1422 return __unicode::__field_width(__s);
/usr/include/c++/15/format: 1417 in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
1411 #endif
1412
1413 private:
1414 static size_t
1415 _S_trunc(basic_string_view<_CharT>& __s, size_t __prec)
1416 {
>>> CID 1662730: (MISSING_RETURN)
>>> Arriving at the end of a function without returning a value.
1417 if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
1418 {
1419 if (__prec != basic_string_view<_CharT>::npos)
1420 return __unicode::__truncate(__s, __prec);
1421 else
1422 return __unicode::__field_width(__s);
** CID 1662727: (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
_____________________________________________________________________________________________
*** CID 1662727: (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
/usr/include/c++/15/format: 819 in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813 {
814 __o = __format::__write(std::move(__o), __padding);
815 __n -= __padding.size();
816 }
817 if (__n != 0)
818 __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>> CID 1662727: (USE_AFTER_MOVE)
>>> Returning while reference parameter "__o" is in a moved state.
819 };
820
821 size_t __l, __r, __max;
822 if (__align == _Align_centre)
823 {
824 __l = __nfill / 2;
** CID 1662584: (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_image_table_data>, std::allocator<std::pair<const dng_fingerprint, dng_image_table_data>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_image_table_data>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>, std::allocator<std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, std::shared_ptr<dng_bmff_box>>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_string, std::pair<const dng_string, dng_semantic_mask>, std::allocator<std::pair<const dng_string, dng_semantic_mask>>, std::__detail::_Select1st, std::equal_to<dng_string>, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_string, dng_semantic_mask>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>, std::allocator<std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_packed_image_table_cache::entry_t>>(T1 &&...)()
_____________________________________________________________________________________________
*** CID 1662584: (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_image_table_data>, std::allocator<std::pair<const dng_fingerprint, dng_image_table_data>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_image_table_data>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>, std::allocator<std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, std::shared_ptr<dng_bmff_box>>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_string, std::pair<const dng_string, dng_semantic_mask>, std::allocator<std::pair<const dng_string, dng_semantic_mask>>, std::__detail::_Select1st, std::equal_to<dng_string>, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_string, dng_semantic_mask>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
/usr/include/c++/15/bits/hashtable.h: 2353 in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>, std::allocator<std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_packed_image_table_cache::entry_t>>(T1 &&...)()
2347 const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348 __kp = std::__addressof(__key);
2349 }
2350
2351 if (auto __loc = _M_locate(*__kp))
2352 // There is already an equivalent node, no insertion.
>>> CID 1662584: (RESOURCE_LEAK)
>>> Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353 return { iterator(__loc), false };
2354 else
2355 {
2356 __code = __loc._M_hash_code;
2357 __bkt = __loc._M_bucket_index;
2358 }
</pre>
<p>
<a href="https://scan.coverity.com/projects/digikam?tab=overview" class="button">View Defects in Coverity Scan</a>
</p>
<p>Best regards,</p>
<p>The Coverity Scan Admin Team</p>
<img class="logo" width="140" src="https://scan.coverity.com/assets/BlackDuckLogo-6697adc63e07340464201a2ad534d3d3e44f95d36edda20b140440d34f05372f.svg" />
</body>
</html>
----==_mimepart_6a56591a29f75_e0b9f2c20652419983548--