I dont think so. $passwort = '*' means that * is used when no parameter is set. But as there is a parameter set, * will never be used. Also if this would be the problem, then password updates would never work, which is not the case.
Please try to compare the passwd and shadow files as I suggested. You can also check the broken one them with the "pwck" command.