swupdate: bump to version 2017.11

Remove upstream patch 0001-Fix-SHA256-hash-verification.patch.

Re-enable support for Lua 5.1 and LuaJIT, which was removed in version 2017.09
because of compatibility issues [1]. Meanwhile, the issues have been resolved
upstream [2].

Note, that `CONFIG_HANDLER_IN_LUA` is now supported by Lua 5.1/LuaJIT, too.

Add a fixup command `SWUPDATE_SET_LUA_VERSION` to set the correct base name for
the Lua/LuaJIT pkg-config file used by the swupdates config option `LUAPKG`.

Fix a small type in the help text:
  'in my mind' -> 'in mind'.

Regenerated the .config script by doing:

```
make swupdate-menuconfig
make swupdate-update-config
```
.. and removing the paths for the build options manually.

[1] http://patchwork.ozlabs.org/patch/795958/
[2] 7b49b8dc59

Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Jörg Krause 2018-01-10 23:28:16 +01:00 committed by Thomas Petazzoni
parent 5e23eb5da7
commit 6c35c0196b
5 changed files with 71 additions and 133 deletions

View File

@ -1,119 +0,0 @@
From dba95dcd3739c604a81ffa2df2545e7a4cd430cf Mon Sep 17 00:00:00 2001
From: Maksim Salau <msalau@iotecha.com>
Date: Wed, 25 Oct 2017 16:17:14 +0300
Subject: [PATCH] Fix SHA256 hash verification
If a CPIO archive is not valid or copying fails due to any reason,
an error message is printed, but update process continues.
The change makes the utility fail in case of read errors or
hash verification errors.
Signed-off-by: Maksim Salau <msalau@iotecha.com>
Acked-by: Stefano Babic <sbabic@denx.de>
---
core/cpio_utils.c | 28 +++++++++++++++++++++-------
corelib/installer.c | 11 +++++++++--
2 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/core/cpio_utils.c b/core/cpio_utils.c
index e962fae..de674ec 100644
--- a/core/cpio_utils.c
+++ b/core/cpio_utils.c
@@ -414,24 +414,34 @@ int extract_img_from_cpio(int fd, unsigned long offset, struct filehdr *fdh)
off_t extract_next_file(int fd, int fdout, off_t start, int compressed,
int encrypted, unsigned char *hash)
{
+ int ret;
struct filehdr fdh;
uint32_t checksum = 0;
unsigned long offset = start;
- if (lseek(fd, offset, SEEK_SET) < 0) {
+ ret = lseek(fd, offset, SEEK_SET);
+ if (ret < 0) {
ERROR("CPIO file corrupted : %s\n",
strerror(errno));
- return -1;
+ return ret;
}
- if (extract_cpio_header(fd, &fdh, &offset)) {
+ ret = extract_cpio_header(fd, &fdh, &offset);
+ if (ret) {
ERROR("CPIO Header wrong\n");
+ return ret;
}
- if (lseek(fd, offset, SEEK_SET) < 0)
+ ret = lseek(fd, offset, SEEK_SET);
+ if (ret < 0) {
ERROR("CPIO file corrupted : %s\n", strerror(errno));
- if (copyfile(fd, &fdout, fdh.size, &offset, 0, 0, compressed, &checksum, hash, encrypted, NULL) < 0) {
+ return ret;
+ }
+
+ ret = copyfile(fd, &fdout, fdh.size, &offset, 0, 0, compressed, &checksum, hash, encrypted, NULL);
+ if (ret < 0) {
ERROR("Error copying extracted file\n");
+ return ret;
}
TRACE("Copied file:\n\tfilename %s\n\tsize %u\n\tchecksum 0x%lx %s\n",
@@ -440,9 +450,11 @@ off_t extract_next_file(int fd, int fdout, off_t start, int compressed,
(unsigned long)checksum,
(checksum == fdh.chksum) ? "VERIFIED" : "WRONG");
- if (checksum != fdh.chksum)
+ if (checksum != fdh.chksum) {
ERROR("Checksum WRONG ! Computed 0x%lx, it should be 0x%lx\n",
(unsigned long)checksum, fdh.chksum);
+ return -EINVAL;
+ }
return offset;
}
@@ -492,8 +504,10 @@ int cpio_scan(int fd, struct swupdate_cfg *cfg, off_t start)
/* Next header must be 4-bytes aligned */
offset += NPAD_BYTES(offset);
- if (lseek(fd, offset, SEEK_SET) < 0)
+ if (lseek(fd, offset, SEEK_SET) < 0) {
ERROR("CPIO file corrupted : %s\n", strerror(errno));
+ return -1;
+ }
}
return 0;
diff --git a/corelib/installer.c b/corelib/installer.c
index 592ada8..d2dee28 100644
--- a/corelib/installer.c
+++ b/corelib/installer.c
@@ -154,6 +154,7 @@ static int extract_script(int fd, struct imglist *head, const char *dest)
{
struct img_type *script;
int fdout;
+ int ret = 0;
LIST_FOREACH(script, head, next) {
if (script->provided == 0) {
@@ -166,9 +167,15 @@ static int extract_script(int fd, struct imglist *head, const char *dest)
dest, script->fname);
fdout = openfileoutput(script->extract_file);
- extract_next_file(fd, fdout, script->offset, 0,
- script->is_encrypted, script->sha256);
+ if (fdout < 0)
+ return fdout;
+
+ ret = extract_next_file(fd, fdout, script->offset, 0,
+ script->is_encrypted, script->sha256);
close(fdout);
+
+ if (ret < 0)
+ return ret;
}
return 0;
}
--
2.7.4

View File

@ -4,7 +4,7 @@ config BR2_PACKAGE_SWUPDATE
depends on BR2_USE_MMU # fork()
# swupdate requires a parser and uses libconfig as default
select BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && \
!BR2_PACKAGE_LUA_5_2 && !BR2_PACKAGE_LUA_5_3
!BR2_PACKAGE_HAS_LUAINTERPRETER
help
swupdate provides a reliable way to update the software on
an embedded system.
@ -16,11 +16,11 @@ config BR2_PACKAGE_SWUPDATE
handler for raw NAND or NOR flash.
The default configuration file builds a reasonable firmware
update system with minimal external dependencies in my
mind. If you like to use your own modified configuration,
update system with minimal external dependencies in mind.
If you like to use your own modified configuration,
you have to select the necessary packages manually:
* Select BR2_PACKAGE_LUA_5_2 or BR2_PACKAGE_LUA_5_3 if you
* Select BR2_PACKAGE_LUA or BR2_PACKAGE_LUAJIT if you want
want to have Lua support.
* Select BR2_LIBCURL if you want to use the download
feature.

View File

@ -11,9 +11,26 @@ CONFIG_HAVE_DOT_CONFIG=y
#
# General Configuration
#
# CONFIG_CURL is not set
# CONFIG_SYSTEMD is not set
CONFIG_SCRIPTS=y
# CONFIG_HW_COMPATIBILITY is not set
CONFIG_SW_VERSIONS_FILE="/etc/sw-versions"
#
# Socket Paths
#
CONFIG_SOCKET_CTRL_PATH="/tmp/sockinstctrl"
CONFIG_SOCKET_PROGRESS_PATH="/tmp/swupdateprog"
CONFIG_SOCKET_REMOTE_HANDLER_DIRECTORY="/tmp/"
#
# MTD support needs libmtd
#
#
# Lua support needs a Lua interpreter
#
# CONFIG_FEATURE_SYSLOG is not set
#
@ -33,21 +50,27 @@ CONFIG_EXTRA_LDLIBS=""
# CONFIG_NOCLEANUP is not set
#
# Bootloader
# U-Boot support needs libubootenv, libz
#
# CONFIG_BOOTLOADER is not set
CONFIG_BOOTLOADER_NONE=y
# CONFIG_BOOTLOADER_GRUB is not set
#
# Suricatta
# Image downloading support needs libcurl
#
# CONFIG_SURICATTA is not set
CONFIG_SURICATTA_SERVER_NONE=y
#
# Server
# Hash verification needs libssl
#
#
# Image verification (signed images) needs libssl
#
#
# Image encryption needs libssl
#
# CONFIG_SURICATTA is not set
CONFIG_WEBSERVER=y
#
@ -60,20 +83,48 @@ CONFIG_MONGOOSE=y
#
CONFIG_MONGOOSEIPV6=y
#
# SSL support needs libcrypto, libssl
#
#
# Archival Features
#
#
# gunzip support needs libz
#
#
# Parser Features
#
CONFIG_LIBCONFIG=y
CONFIG_PARSERROOT=""
#
# JSON config parser support needs json-c
#
# CONFIG_SETSWDESCRIPTION is not set
#
# Image Handlers
#
#
# ubivol support needs libubi
#
CONFIG_RAW=y
# CONFIG_SHELLSCRIPTHANDLER is not set
#
# archive support needs libarchive
#
#
# remote handler needs zeromq
#
#
# SWU forwarder requires libcurl
#
# CONFIG_BOOTLOADERHANDLER is not set

View File

@ -1,2 +1,2 @@
# Locally calculated
sha256 898a98b0c5a6bd09a4138fa98bb9883357db1ec6fe4dd5e8f4bcb11d092b9bf3 swupdate-2017.07.tar.gz
sha256 1e15d9675cf7e23886dca7ea058498282c35679a555845dbc85ffe688f2cc681 swupdate-2017.11.tar.gz

View File

@ -4,7 +4,7 @@
#
################################################################################
SWUPDATE_VERSION = 2017.07
SWUPDATE_VERSION = 2017.11
SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))
SWUPDATE_LICENSE = GPL-2.0+, MIT, Public Domain
SWUPDATE_LICENSE_FILES = COPYING
@ -39,8 +39,13 @@ else
SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n
endif
ifeq ($(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUA_5_3),y)
SWUPDATE_DEPENDENCIES += lua host-pkgconf
ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y)
SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf
# defines the base name for the pkg-config file ("lua" or "luajit")
define SWUPDATE_SET_LUA_VERSION
$(call KCONFIG_SET_OPT,CONFIG_LUAPKG,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER),$(SWUPDATE_BUILD_CONFIG))
endef
SWUPDATE_MAKE_ENV += HAVE_LUA=y
else
SWUPDATE_MAKE_ENV += HAVE_LUA=n
@ -110,6 +115,7 @@ endef
define SWUPDATE_KCONFIG_FIXUP_CMDS
$(SWUPDATE_PREFER_STATIC)
$(SWUPDATE_SET_BUILD_OPTIONS)
$(SWUPDATE_SET_LUA_VERSION)
endef
define SWUPDATE_BUILD_CMDS