From f3a9e54c09829cec51062ebb754545c79370ddfe Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 4 Dec 2019 21:49:17 +0100 Subject: proj_grid_info(): fix crash when passing a file that exists but is not a grid --- src/4D_api.cpp | 2 +- test/unit/gie_self_tests.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/4D_api.cpp b/src/4D_api.cpp index 26e9456e..f37594b5 100644 --- a/src/4D_api.cpp +++ b/src/4D_api.cpp @@ -1557,7 +1557,7 @@ PJ_GRID_INFO proj_grid_info(const char *gridname) { memset(&grinfo, 0, sizeof(PJ_GRID_INFO)); /* in case the grid wasn't found */ - if (gridinfo->filename == nullptr) { + if (gridinfo->filename == nullptr || gridinfo->ct == nullptr) { pj_gridinfo_free(ctx, gridinfo); strcpy(grinfo.format, "missing"); return grinfo; diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp index 15db814a..a738db75 100644 --- a/test/unit/gie_self_tests.cpp +++ b/test/unit/gie_self_tests.cpp @@ -386,6 +386,10 @@ TEST(gie, info_functions) { grid_info = proj_grid_info("nonexistinggrid"); ASSERT_EQ(std::string(grid_info.filename), ""); + // File exists, but is not a grid + grid_info = proj_grid_info("proj.db"); + ASSERT_EQ(std::string(grid_info.filename), ""); + /* proj_init_info() */ init_info = proj_init_info("unknowninit"); ASSERT_EQ(std::string(init_info.filename), ""); -- cgit v1.2.3