В самом первом примере идёт обращение к
salt[3]=
неаллоцированному элементу. Гавно-вопрос. Константа мать ее так. Далее.
Весьма полезно что в данном примере используется функция rand.
Далее. Коварным образом.
salt[(int)((3ul*rand())/MAX_INT)]=
Будет ли анализатор видеть здесь дефект?
А если 3ul заменить на 4ul ?