id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,cpu,platform 2754,Handle corrupt data in r.gwflow and gpde library,wenzeslaus,grass-dev@…,"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''.",enhancement,new,trivial,7.6.2,Raster,svn-trunk,,"r.gwflow, gpde, libgpde, dirichlet",,All,All