Skip to content

Commit 4780542

Browse files
authored
gdal raster color-map/gdaldem color-relief: fix crash when color map is invalid and outputing to a format without CreateCopy capability (#13445)
Fixes https://lists.osgeo.org/pipermail/gdal-dev/2025-November/061178.html
2 parents 0855511 + e38cfe8 commit 4780542

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

apps/gdaldem_lib.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1866,7 +1866,8 @@ class GDALColorReliefDataset final : public GDALDataset
18661866

18671867
bool InitOK() const
18681868
{
1869-
return pafSourceBuf != nullptr || panSourceBuf != nullptr;
1869+
return !asColorAssociation.empty() &&
1870+
(pafSourceBuf != nullptr || panSourceBuf != nullptr);
18701871
}
18711872

18721873
CPLErr GetGeoTransform(GDALGeoTransform &gt) const override;

autotest/utilities/test_gdalalg_raster_color_map.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,20 @@ def test_gdalalg_raster_color_map_from_color_table(options, checksum, output_for
121121
assert [
122122
out_ds.GetRasterBand(i + 1).Checksum() for i in range(out_ds.RasterCount)
123123
] == checksum
124+
125+
126+
@pytest.mark.parametrize("output_format", ["MEM", "PNG"])
127+
def test_gdalalg_raster_empty_color_map(tmp_vsimem, output_format):
128+
129+
if gdal.GetDriverByName(output_format) is None:
130+
pytest.skip(f"{output_format} not available")
131+
132+
gdal.FileFromMemBuffer(tmp_vsimem / "empty.txt", "")
133+
134+
alg = get_alg()
135+
alg["input"] = "../gdrivers/data/n43.tif"
136+
alg["color-map"] = tmp_vsimem / "empty.txt"
137+
alg["output"] = tmp_vsimem / "out"
138+
alg["output-format"] = output_format
139+
with pytest.raises(Exception, match="No color association found"):
140+
alg.Run()

0 commit comments

Comments
 (0)