Message ID | 20250124162308.250651-1-Quirin.Gylstorff@siemens.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [isar-cip-core] swupdate.bbclass: Add check if a swu file is greater than 4GB | expand |
On 24.01.25 17:22, Quirin Gylstorff wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > 4GB is the size limit of a file in a cpio archive. cpio prints > the following message but returns zero in that case. > > ``` > value file size 10 out of allowed range 0..4294967295 > ``` > > The sum of files in the archive can be greater than 4GB. > > This fixes Issue #125. > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > classes/swupdate.bbclass | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/classes/swupdate.bbclass b/classes/swupdate.bbclass > index 3243f67..05291ee 100644 > --- a/classes/swupdate.bbclass > +++ b/classes/swupdate.bbclass > @@ -247,7 +247,17 @@ IMAGE_CMD:swu() { > fi > cpio_files="$cpio_files $signature_file" > fi > - > + # check if swu_files are less than 4GBytes. > + # This avoids the limit of cpio > + for swu_file in $swu_files; do > + file_size =$(stat -c %s "$swu_file") > + if [ "$file_size" -ge 4294967295 ] ; then > + echo "The size of '$swu_file': '$file_size' is greater" \ > + "than the limit of the swu format of 4294967295" \ > + "Bytes per file" 1>&2 > + exit 1 > + fi > + done > # sw-description must be first file in *.swu > for cpio_file in $cpio_files $swu_files; do > if [ -f "$cpio_file" ]; then Thanks, applied. Jan
diff --git a/classes/swupdate.bbclass b/classes/swupdate.bbclass index 3243f67..05291ee 100644 --- a/classes/swupdate.bbclass +++ b/classes/swupdate.bbclass @@ -247,7 +247,17 @@ IMAGE_CMD:swu() { fi cpio_files="$cpio_files $signature_file" fi - + # check if swu_files are less than 4GBytes. + # This avoids the limit of cpio + for swu_file in $swu_files; do + file_size =$(stat -c %s "$swu_file") + if [ "$file_size" -ge 4294967295 ] ; then + echo "The size of '$swu_file': '$file_size' is greater" \ + "than the limit of the swu format of 4294967295" \ + "Bytes per file" 1>&2 + exit 1 + fi + done # sw-description must be first file in *.swu for cpio_file in $cpio_files $swu_files; do if [ -f "$cpio_file" ]; then