- Multiple flaws were found in the way the RPM library parsed package headers. An attacker could create a specially-crafted RPM package that, when queried or installed, would cause rpm to crash or, potentially, execute arbitrary code.
NoteAlthough an RPM package can, by design, execute arbitrary code when installed, this issue would allow a specially-crafted RPM package to execute arbitrary code before its digital signature has been verified. Package downloads from the Red Hat Network remain secure due to certificate checks performed on the secure connection.
- Previously, an attempt to initialize the rpm database in a non-existent directory could have failed to create a transaction lock. With this update, this problem has been fixed in that RPM now tries to create a non-existent directory before creating the lock.
- Previously, an attempt to close a NULL rpmio file descriptor caused the process to terminate with when calling the "assert()" function. With this update, the problem with the process termination has been fixed and the "Fclose()" function now accepts a NULL pointer and performs no operation.
- Previously, in Python bindings, calling "hdr.dsFromHeader()" caused a SystemError exception on headers with no dependencies, for example gpg-pubkey headers. With this update, RPM now returns an empty dependency set object in this case.
- Previously, RPM library initialization forced the umask of the process to "022", which could have caused unwanted permissions for files created by software that makes use of the RPM API. With this update, the umask is now only changed for the duration of a transaction and restored to its previous value afterwards.
- Previously, disabling package scriptlet execution (the "rpm --noscripts" command) did not prevent "%pretrans" and "%posttrans" scriptlets from running. With this update, the "--noscripts" option now disables execution of all scriptlet types.
- The "%setup" and "%patch" spec directives now support transparent decompression of XZ and LZMA compressed source tarballs and patch files.
- Support for the "RPMCALLBACK_SCRIPT_ERROR" callback event has been added in this update. This allows programs that make use of the librpm API (for example yum) to report install or erase failures more accurately.