/* find the length without signature */
        len = 0;
-       while (len < size && prefixcmp(buf + len, PGP_SIGNATURE "\n")) {
+       while (len < size && prefixcmp(buf + len, PGP_SIGNATURE)) {
                eol = memchr(buf + len, '\n', size - len);
                len += eol ? eol - (buf + len) + 1 : size - len;
        }
        memset(&gpg, 0, sizeof(gpg));
        gpg.argv = args_gpg;
        gpg.in = -1;
-       gpg.out = 1;
        args_gpg[2] = path;
-       if (start_command(&gpg))
+       if (start_command(&gpg)) {
+               unlink(path);
                return error("could not run gpg.");
+       }
 
        write_in_full(gpg.in, buf, len);
        close(gpg.in);
-       gpg.close_in = 0;
        ret = finish_command(&gpg);
 
        unlink(path);
 {
        int i = 1, verbose = 0, had_error = 0;
 
-       git_config(git_default_config);
+       git_config(git_default_config, NULL);
 
        if (argc == 1)
                usage(builtin_verify_tag_usage);