I can't make any sense of this.  The only way configuration->arguments could be non-NULL is if cf-upgrade were passed two -i flags, and parser() weren't (as it actually is) simply collecting everything after the first -i as parameters to its command; i.e., we can't actually be here.  But, even if we *were* here, we're setting arguments[0] and command to copies of path, so surely we should be resetting number_of_arguments to 1, not incrementing it (to one more than the number of arguments the prior -i gave to its command) !