#2754: Handle corrupt data in r.gwflow and gpde library
------------------------------------------------+-------------------------
Reporter: wenzeslaus | Owner: grass-dev@…
Type: enhancement | Status: new
Priority: trivial | Milestone: 7.1.0
Component: Raster | Version: svn-trunk
Keywords: r.gwflow, gpde, libgpde, dirichlet | CPU: All
Platform: All |
------------------------------------------------+-------------------------
Moving ''r.gwflow''-related discussion from #2750 to a separate ticket.
In #2750 [comment:11:ticket:2750 sprice] suggested a simple improvement
for ''r.gwflow'' and ''gpde'' library:
> If you do a diff with
[source:grass/trunk/lib/gpde/n_les_assemble.c#L1289 n_les_assemble.c]
you'll see that I [attachment/ticket/2750/lz4_zstd4.tgz added] a few if
statements to ensure that the indexing stays within row/col bounds. I was
getting segfaults with corrupt data before I fixed the other bugs. I
figure it should be able to handle any data without segfaulting, even if
corrupt.
This is a trivial change but I'm not sure if this is necessary. Let me
throw out some questions. How you can get a corrupt data unless changing
raster library? If we want this to handle corrupt data here, where else we
want to do that? What is the appropriate `else` branch, nothing or fatal
error?
This is the change:
{{{
#!diff
/*set the rows to zero */
+if (count < les->rows)
for (i = 0; i < les->cols; i++)
les->A[count][i] = 0.0;
/*set the cols to zero */
+if (count < les->cols)
for (i = 0; i < les->rows; i++)
les->A[i][count] = 0.0;
/*entry on the diagonal */
+if (count < les->rows && count < les->cols)
les->A[count][count] = 1.0;
}}}
The change is in `N_les_integrate_dirichlet_2d()` function which is used
only in ''r.gwflow''.
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/2754>
GRASS GIS <https://grass.osgeo.org>