From 6ddf97fddf38c7e60dfbe3428cf2f69fd83bd9e3 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 25 Aug 2024 17:30:57 +0200 Subject: [PATCH 1/2] filegdbtable_write_fields.cpp: fix cpp/unsigned-difference-expression-compared-zero Fixes https://github.com/OSGeo/gdal/security/code-scanning/587 --- ogr/ogrsf_frmts/openfilegdb/filegdbtable.h | 2 +- ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ogr/ogrsf_frmts/openfilegdb/filegdbtable.h b/ogr/ogrsf_frmts/openfilegdb/filegdbtable.h index 6fa44cac9892..ee31e3ee4554 100644 --- a/ogr/ogrsf_frmts/openfilegdb/filegdbtable.h +++ b/ogr/ogrsf_frmts/openfilegdb/filegdbtable.h @@ -531,7 +531,7 @@ class FileGDBTable int64_t m_nTotalRecordCount = 0; int m_iGeomField = -1; int m_nCountNullableFields = 0; - int m_nNullableFieldsSizeInBytes = 0; + unsigned m_nNullableFieldsSizeInBytes = 0; std::vector m_adfSpatialIndexGridResolution{}; diff --git a/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp b/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp index 66554aa2001a..d907f958a9bc 100644 --- a/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp @@ -170,7 +170,7 @@ bool FileGDBTable::RewriteTableToAddLastAddedField() { nOldCountNullableFields--; } - const int nOldNullableFieldsSizeInBytes = + const unsigned nOldNullableFieldsSizeInBytes = BIT_ARRAY_SIZE_IN_BYTES(nOldCountNullableFields); int nExtraBytes = 0; if (nOldNullableFieldsSizeInBytes != m_nNullableFieldsSizeInBytes) @@ -320,7 +320,7 @@ bool FileGDBTable::RewriteTableToAddLastAddedField() return false; // Write updated feature data - if (nOldNullableFieldsSizeInBytes > 0) + if (nOldNullableFieldsSizeInBytes != 0) { if (VSIFWriteL(m_abyBuffer.data(), nOldNullableFieldsSizeInBytes, 1, @@ -336,7 +336,7 @@ bool FileGDBTable::RewriteTableToAddLastAddedField() oWholeFileRewriter.m_fpTable) != 1) return false; } - if (nFeatureSize - nOldNullableFieldsSizeInBytes > 0) + if (nFeatureSize > nOldNullableFieldsSizeInBytes) { if (VSIFWriteL(m_abyBuffer.data() + nOldNullableFieldsSizeInBytes, From 13ffc67a30fc7f722ace14aef1938dbb3e2b3ea6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 25 Aug 2024 17:32:29 +0200 Subject: [PATCH 2/2] ogrgeojsonreader.cpp: fix cpp/unsigned-difference-expression-compared-zero Fixes https://github.com/OSGeo/gdal/security/code-scanning/584 Fixes https://github.com/OSGeo/gdal/security/code-scanning/585 Fixes https://github.com/OSGeo/gdal/security/code-scanning/586 --- ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp b/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp index bd08345f2645..bc00e1180fa3 100644 --- a/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp +++ b/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp @@ -479,7 +479,7 @@ bool OGRGeoJSONReader::FirstPassReadLayer(OGRGeoJSONDataSource *poDS, bFirstSeg_ = false; nSkip = SkipPrologEpilogAndUpdateJSonPLikeWrapper(nRead); } - if (bFinished && bJSonPLikeWrapper_ && nRead - nSkip > 0) + if (bFinished && bJSonPLikeWrapper_ && nRead > nSkip) nRead--; if (!oParser.Parse(reinterpret_cast(pabyBuffer_ + nSkip), nRead - nSkip, bFinished) || @@ -704,7 +704,7 @@ OGRFeature *OGRGeoJSONReader::GetNextFeature(OGRGeoJSONLayer *poLayer) bFirstSeg_ = false; nSkip = SkipPrologEpilogAndUpdateJSonPLikeWrapper(nRead); } - if (bFinished && bJSonPLikeWrapper_ && nRead - nSkip > 0) + if (bFinished && bJSonPLikeWrapper_ && nRead > nSkip) nRead--; if (!poStreamingParser_->Parse( reinterpret_cast(pabyBuffer_ + nSkip), @@ -762,7 +762,7 @@ OGRFeature *OGRGeoJSONReader::GetFeature(OGRGeoJSONLayer *poLayer, GIntBig nFID) bFirstSeg_ = false; nSkip = SkipPrologEpilogAndUpdateJSonPLikeWrapper(nRead); } - if (bFinished && bJSonPLikeWrapper_ && nRead - nSkip > 0) + if (bFinished && bJSonPLikeWrapper_ && nRead > nSkip) nRead--; auto pszPtr = reinterpret_cast(pabyBuffer_ + nSkip); for (size_t i = 0; i < nRead - nSkip; i++)