The fix seems to work, but I remember finding a similar issue at Xmas and fixing it then. I shall put this into svn and everyone should test more to make sure this doesn't just pull the rug out of another corner.
Matt Richards wrote: > Greetings, > > I think I hit upon the perfect circumstance to bust the hash table in > GetVariable (vars.c). I believe that the hash table is not going far enough > before reseting the increment as I end up in an infinite loop. See the > comments "//" below: > > Debug("GetVariable(%s,%s): using scope '%s' for variable > '%s'\n",scopeid,vlval,ptr->scope,vlval); > > if (CompareVariable(vlval,ptr->hashtable[slot]) != 0) > { > /* Recover from previous hash collision */ > > while (true) > { > i++; > > if (i >= CF_HASHTABLESIZE-1) > > // I think this should be (i >= CF_HASHTABLESIZE). The testcase I have seems > to have a value in the last slot of > // the hash table, which makes the loop never end. > // > //i:4965 slot:4968 > //i:4966 slot:4968 > //i:4967 slot:4968 > //i:4968 slot:4968 > //i:1 slot:4968 > //i:2 slot:4968 > //... > //i:4967 slot:4968 > //i:4968 slot:4968 > //i:1 slot:4968 > //i:2 slot:4968 > //... > // rinse, lather, repeat > > { > i = 0; > } > > if (CompareVariable(vlval,ptr->hashtable[i]) == 0) > { > found = true; > break; > } > > /* Removed autolookup in Unix environment variables - > implement as getenv() fn instead */ > > if (i == slot) > { > found = false; > break; > } > } > > if (!found) > { > Debug("No such variable found %s.%s\n",scope,lval); > *returnv = lval; > *rtype = CF_SCALAR; > return cf_notype; > } > } > > > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/help-cfengine -- Mark Burgess ------------------------------------------------- Professor of Network and System Administration Oslo University College, Norway Personal Web: http://www.iu.hio.no/~mark Office Telf : +47 22453272 ------------------------------------------------- _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine