If the format string comes from (potentially untrusted) source, then we're screwed anyway, that has to be verified along with the arguments. And probably that is the right time to generate the output string too (at least the parts coming from the user).