Handle corrupt data in r.gwflow and gpde library
|Reported by:||wenzeslaus||Owned by:|
|Keywords:||r.gwflow, gpde, libgpde, dirichlet||Cc:|
Moving r.gwflow-related discussion from #2750 to a separate ticket.
If you do a diff with 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:
/*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.