summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <patrick@georgi-clan.de>2011-11-05 14:39:56 +0100
committerStefan Reinauer <stefan.reinauer@coreboot.org>2011-11-06 18:25:29 +0100
commitf285e0412509dc3aa192931b6a0832dbdbc74d0a (patch)
treeb39e650d0978845e0fc2c3160743279824b84b6c
parent3db85f3c1b7d6f167a517dbdd3b4d74971ea620c (diff)
kconfig: Use more collision resistant temporary filenames
kconfig creates reasonably safe filenames for its temporary files except for two of them. Change-Id: I6861f55ae2a5311e3fb7919333ce9af1e39ce78b Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/408 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r--util/kconfig/confdata.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/util/kconfig/confdata.c b/util/kconfig/confdata.c
index 946b8a9c0b..79e0b359ea 100644
--- a/util/kconfig/confdata.c
+++ b/util/kconfig/confdata.c
@@ -682,6 +682,7 @@ int conf_write_autoconf(void)
FILE *out, *out_h;
time_t now;
int i, l;
+ char tmpname[128], tmpname_h[128];
sym_clear_all_valid();
@@ -692,11 +693,13 @@ int conf_write_autoconf(void)
return 1;
#endif
- out = fopen(".tmpconfig", "w");
+ sprintf(tmpname, ".tmpconfig.%d", (int)getpid());
+ out = fopen(tmpname, "w");
if (!out)
return 1;
- out_h = fopen(".tmpconfig.h", "w");
+ sprintf(tmpname_h, ".tmpconfig.h.%d", (int)getpid());
+ out_h = fopen(tmpname_h, "w");
if (!out_h) {
fclose(out);
return 1;
@@ -791,7 +794,7 @@ int conf_write_autoconf(void)
if (!name)
name = "include/linux/autoconf.h";
UNLINK_IF_NECESSARY(name);
- if (rename(".tmpconfig.h", name))
+ if (rename(tmpname_h, name))
return 1;
name = getenv("KCONFIG_AUTOCONFIG");
if (!name)
@@ -801,7 +804,7 @@ int conf_write_autoconf(void)
* and this marks the successful completion of the previous steps.
*/
UNLINK_IF_NECESSARY(name);
- if (rename(".tmpconfig", name))
+ if (rename(tmpname, name))
return 1;
return 0;