Browse Source

autoupdater: verify the image before upgrading (#247)

Let sysupgrade run a --test upgrade to verify that the image is
compatible before attempting an upgrade.
This fixes an issue where a router can get stuck without network
connectivity when a a remote autoupgrade was triggered.

Fixes #193
pull/241/merge
Grische 1 month ago
committed by GitHub
parent
commit
0648b2dbf7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      admin/autoupdater/src/autoupdater.c

18
admin/autoupdater/src/autoupdater.c

@ -378,6 +378,24 @@ static bool autoupdate(const char *mirror, struct settings *s, int lock_fd) {
}
}
/* Test the image upgrade (issue #193) */
{
static const char *const exec_builtin = "exec ";
static const char *const test_option = " --test ";
char buf[strlen(exec_builtin) + strlen(sysupgrade_path) + strlen(test_option) + strlen(firmware_path) + 1];
strcpy(buf, exec_builtin);
strcat(buf, sysupgrade_path);
strcat(buf, test_option);
strcat(buf, firmware_path);
const int sysupgrade_ret = system(buf);
if (WEXITSTATUS(sysupgrade_ret) != 0 ) {
fprintf(stderr, "autoupdater: warning: sysupgrade --test failed with return code: %d\n", WEXITSTATUS(sysupgrade_ret));
goto fail_after_download;
}
}
clear_manifest(m);
/**** Call sysupgrade ************************************************/

Loading…
Cancel
Save