summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLori Hikichi <lori.hikichi@broadcom.com>2020-02-18 11:14:22 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-02-19 11:24:15 +0000
commitbe53b56b0cc2e1e8ab626de2c7b226f82a20c6c6 (patch)
treee6526985fcbefda5dc7f5a34d5d943ed94e3a713
parentf84aa7c191e5c646c881cb6f5f9fc9dd466346ad (diff)
downloadpoky-be53b56b0cc2e1e8ab626de2c7b226f82a20c6c6.tar.gz
rpm2cpio.sh: fix to handle newline character
This script is attempting to read binary data from an rpm file. If any of the bytes it is attempt to read is the binary value 0xa (i.e. a newline) then the script does not properly deal with this special case. Due to the behavior of command substitution, instead of fetching the value 0xa, the script makes an error and get the value 0 instead. The fix and the following explantion was taken from this post... https://unix.stackexchange.com/questions/10801/ how-to-use-bash-script-to-read-binary-file-content Command substitution $(…) strips final newlines in the command output. There's a fairly easy workaround. Make sure the output ends in a character other than a newline, then strip that one character. (From OE-Core rev: a40a93e81766513cf710e713093ab74c6ec936c3) Signed-off-by: Lori Hikichi <lori.hikichi@broadcom.com> Signed-off-by: Scott Branden <scott.branden@broadcom.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/rpm2cpio.sh3
1 files changed, 2 insertions, 1 deletions
diff --git a/scripts/rpm2cpio.sh b/scripts/rpm2cpio.sh
index 876c53c5d9..7cd771bbe7 100755
--- a/scripts/rpm2cpio.sh
+++ b/scripts/rpm2cpio.sh
@@ -22,7 +22,8 @@ calcsize() {
22 22
23 i=0 23 i=0
24 while [ $i -lt 8 ]; do 24 while [ $i -lt 8 ]; do
25 b="$(_dd $(($offset + $i)) bs=1 count=1)" 25 b=$(_dd $(($offset + $i)) bs=1 count=1; echo X)
26 b=${b%X}
26 [ -z "$b" ] && 27 [ -z "$b" ] &&
27 b="0" || 28 b="0" ||
28 b="$(exec printf '%u\n' "'$b")" 29 b="$(exec printf '%u\n' "'$b")"