diff options
author | Patrick Georgi <patrick@georgi-clan.de> | 2011-11-05 14:39:56 +0100 |
---|---|---|
committer | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2011-11-06 18:25:29 +0100 |
commit | f285e0412509dc3aa192931b6a0832dbdbc74d0a (patch) | |
tree | b39e650d0978845e0fc2c3160743279824b84b6c | |
parent | 3db85f3c1b7d6f167a517dbdd3b4d74971ea620c (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.c | 11 |
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; |