|
@@ -176,7 +176,7 @@ static int __init make_tempfile(const char *template, char **out_tempname,
|
|
|
|
|
|
find_tempdir();
|
|
|
if ((tempdir == NULL) || (strlen(tempdir) >= MAXPATHLEN))
|
|
|
- return -1;
|
|
|
+ goto out;
|
|
|
|
|
|
if (template[0] != '/')
|
|
|
strcpy(tempname, tempdir);
|
|
@@ -191,13 +191,15 @@ static int __init make_tempfile(const char *template, char **out_tempname,
|
|
|
}
|
|
|
if (do_unlink && (unlink(tempname) < 0)) {
|
|
|
perror("unlink");
|
|
|
- goto out;
|
|
|
+ goto close;
|
|
|
}
|
|
|
if (out_tempname) {
|
|
|
*out_tempname = tempname;
|
|
|
} else
|
|
|
free(tempname);
|
|
|
return fd;
|
|
|
+close:
|
|
|
+ close(fd);
|
|
|
out:
|
|
|
free(tempname);
|
|
|
return -1;
|