Opened 16 years ago
Closed 16 years ago
#2000 closed defect (fixed)
use of uninitialized memory in netCDFDataset::SetProjection
Reported by: | Even Rouault | Owned by: | warmerdam |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | GDAL_Raster | Version: | svn-trunk |
Severity: | normal | Keywords: | netcdf |
Cc: | dnadeau |
Description
Running Valgrind on autotest/gdrivers/netcdf.py gives the following warning:
==14014== Use of uninitialised value of size 4 ==14014== at 0x40C9390: (within /lib/tls/i686/cmov/libc-2.6.1.so) ==14014== by 0x40D1ABA: __printf_fp (in /lib/tls/i686/cmov/libc-2.6.1.so) ==14014== by 0x40CBAE6: vfprintf (in /lib/tls/i686/cmov/libc-2.6.1.so) ==14014== by 0x40E933B: vsprintf (in /lib/tls/i686/cmov/libc-2.6.1.so) ==14014== by 0x40D49BD: sprintf (in /lib/tls/i686/cmov/libc-2.6.1.so) ==14014== by 0x493AA92: OGRPrintDouble(char*, double) (ogrspatialreference.cpp:50) ==14014== by 0x493CBC8: OGRSpatialReference::SetProjParm(char const*, double) (ogrspatialreference.cpp:2361) ==14014== by 0x493FC03: OGRSpatialReference::SetNormProjParm(char const*, double) (ogrspatialreference.cpp:2612) ==14014== by 0x4943F36: OGRSpatialReference::SetTM(double, double, double, double, double) (ogrspatialreference.cpp:2642) ==14014== by 0x467E344: netCDFDataset::SetProjection(int) (netcdfdataset.cpp:795) ==14014== by 0x4682491: netCDFDataset::Open(GDALOpenInfo*) (netcdfdataset.cpp:1711) ==14014== by 0x477C275: GDALOpen (gdaldataset.cpp:1774) ==14014== by 0x467CF17: NCDFCreateCopy(char const*, GDALDataset*, int, char**, int (*)(double, char const*, void*), void*) (netcdfdataset.cpp:2457) ==14014== by 0x478180F: GDALDriver::CreateCopy(char const*, GDALDataset*, int, char**, int (*)(double, char const*, void*), void*) (gdaldriver.cpp:531)
A quick read of netCDFDataset::SetProjection shows that in that context dfScale is passed to oSRS.SetTM() without being initialized. (That could also true for the other parameters)
Note:
See TracTickets
for help on using tickets.
Fixed in r12878 which also substantially simplifies projection handling, and stops attaching a copy of "geolocation" metadata to the dataset that largely duplicates what is already in the SRS. Also fixes a few typos in the projection parameters (which lead to the issue noted in this bug).