Explorar o código

r.geomorphon: Fix an out-of-bounds read w/multires (#995)

There was a comma missing between array initializers, so the element at
index 3 ended up set to a longer string, and the element at index 4 did
not exist because the array is defined without an explicit size.

This squelches a warning from gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0:

main.c:504:47: warning: iteration 4 invokes undefined behavior
[-Waggressive-loop-optimizations]
  504 |      strcat(multiple_output[i].name, postfixes[i]);
      |                                      ~~~~~~~~~^~~
main.c:501:2: note: within this loop
  501 |  for (i = 0; i < 5; ++i) {
      |  ^~~
Denis Ovsienko %!s(int64=4) %!d(string=hai) anos
pai
achega
867ff057b2
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      raster/r.geomorphon/main.c

+ 1 - 1
raster/r.geomorphon/main.c

@@ -494,7 +494,7 @@ int main(int argc, char **argv)
     if (multires) {
     if (multires) {
 	PATTERN *multi_patterns;
 	PATTERN *multi_patterns;
 	MULTI multiple_output[5];	/* ten form maps + all forms */
 	MULTI multiple_output[5];	/* ten form maps + all forms */
-	char *postfixes[] = { "scale_300", "scale_100", "scale_50", "scale_20" "scale_10" };	/* in pixels */
+	char *postfixes[] = { "scale_300", "scale_100", "scale_50", "scale_20", "scale_10" };	/* in pixels */
 	num_of_steps = 5;
 	num_of_steps = 5;
 	multi_patterns = G_malloc(num_of_steps * sizeof(PATTERN));
 	multi_patterns = G_malloc(num_of_steps * sizeof(PATTERN));
 	/* prepare outputs */
 	/* prepare outputs */