diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2016-10-14 13:41:26 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-10-15 09:58:54 +0100 |
commit | 84de3283fa2a2908d367eb58953903ae685b0298 (patch) | |
tree | 34b22ee8914c31d970525a29083eb26eb8a78ee8 /meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch | |
parent | 4e61d8d6f4619dbfaeb5ca642449de7cf4b3e92d (diff) | |
download | openembedded-core-contrib-84de3283fa2a2908d367eb58953903ae685b0298.tar.gz |
rpm: prevent race in tempdir creation
This patch fixes an extramely rare race condition in creation of rpmdb
temporary directory. The "rpmdb-more-verbose-error-logging" patch is
still left in place, just for the case.
[YOCTO #9416]
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch')
-rw-r--r-- | meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch b/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch index 809e54e9cb..3a6f8746cc 100644 --- a/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch +++ b/meta/recipes-devtools/rpm/rpm/rpmdb-more-verbose-error-logging-in-rpmTempFile.patch @@ -5,32 +5,10 @@ Upstream-Status: Inappropriate [debugging] Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> diff --git a/rpmdb/signature.c b/rpmdb/signature.c -index dce6c4e..a1d0f06 100644 +index 100204b..e56ab3d 100644 --- a/rpmdb/signature.c +++ b/rpmdb/signature.c -@@ -37,6 +37,7 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr) - int temput; - FD_t fd = NULL; - unsigned int ran; -+ int ret = 0; - - if (!prefix) prefix = ""; - -@@ -44,8 +45,11 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr) - if (!_initialized) { - _initialized = 1; - tempfn = rpmGenPath(prefix, tpmacro, NULL); -- if (rpmioMkpath(tempfn, 0755, (uid_t) -1, (gid_t) -1)) -- goto errxit; -+ ret = rpmioMkpath(tempfn, 0755, (uid_t) -1, (gid_t) -1); -+ if (ret) { -+ rpmlog(RPMLOG_ERR, _("error creating temporary directory %s: %d\n"), tempfn, ret); -+ goto errxit; -+ } - } - - /* XXX should probably use mkstemp here */ -@@ -68,12 +72,16 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr) +@@ -72,12 +72,16 @@ int rpmTempFile(const char * prefix, const char ** fnptr, void * fdptr) #endif temput = urlPath(tempfn, &tfn); |