From: Maria Matejka Date: Fri, 16 Aug 2019 10:47:13 +0000 (+0200) Subject: OSPF: variable-length array of size 0 replaced by alloca()'d pointer X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c1ac361265cc212f19eae66454c8ead19b64602;p=thirdparty%2Fbird.git OSPF: variable-length array of size 0 replaced by alloca()'d pointer NULL pointer is safer than a random pointer onto stack if this function gets changed and eventually broken. --- diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index 29610f4ac..3cb402834 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -1244,7 +1244,7 @@ ospf_sh_state(struct proto *P, int verbose, int reachable) uint num = p->gr->hash_entries; struct top_hash_entry *hea[num]; - struct top_hash_entry *hex[verbose ? num : 0]; + struct top_hash_entry **hex = verbose ? alloca(num * sizeof(struct top_hash_entry *)) : NULL; struct top_hash_entry *he; struct top_hash_entry *cnode = NULL; @@ -1289,7 +1289,9 @@ ospf_sh_state(struct proto *P, int verbose, int reachable) lsa_compare_ospf3 = !ospf2; qsort(hea, j1, sizeof(struct top_hash_entry *), lsa_compare_for_state); - qsort(hex, jx, sizeof(struct top_hash_entry *), ext_compare_for_state); + + if (verbose) + qsort(hex, jx, sizeof(struct top_hash_entry *), ext_compare_for_state); /* * This code is a bit tricky, we have a primary LSAs (router and