Fíjate dónde metes los caracteres leídos y qué caracteres compruebas.
Por ejemplo, si n=7, metes en descripcion[7] el caracter leído, aumentas n (n=8), se empieza nueva iteración y compruebas que descripcion[8] no sea igual a ':', cuando el caracter que has leído lo has metido en la posición 7.
Es decir, que, si no me equivoco, iría así:
while ((descripcion[n-1]!=':')&&(descripcion[n-2]!=':')&&(descripcion[n-3]!=':')&&(descripcion[n-4]!=':'))
{
fscanf(sec,"%c",&descripcion[n]);
n++;
}
ó (con los cambios oportunos en el resto del código)
while ((descripcion[n]!=':')&&(descripcion[n-1]!=':')&&(descripcion[n-2]!=':')&&(descripcion[n-3]!=':'))
{
n++;
fscanf(sec,"%c",&descripcion[n]);
}