Просмотр исходного кода

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 4 лет назад
Родитель
Сommit
867ff057b2
1 измененных файлов с 1 добавлено и 1 удалено
  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) {
 	PATTERN *multi_patterns;
 	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;
 	multi_patterns = G_malloc(num_of_steps * sizeof(PATTERN));
 	/* prepare outputs */