auc: don't segfault on invalid URL

Show error message instead of segfaulting in case of an invalid URL
being read from UCI config.

Fixes: #17971
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2022-03-13 23:48:28 +00:00
parent d098f907bb
commit c0d2c82528
No known key found for this signature in database
GPG Key ID: 5A8F39C31C3217CA
1 changed files with 13 additions and 2 deletions

View File

@ -307,6 +307,7 @@ static int load_config() {
struct uci_context *uci_ctx;
struct uci_package *uci_attendedsysupgrade;
struct uci_section *uci_s;
char *url;
uci_ctx = uci_alloc_context();
if (!uci_ctx)
@ -319,13 +320,23 @@ static int load_config() {
fprintf(stderr, "Failed to load attendedsysupgrade config\n");
return -1;
}
uci_s = uci_lookup_section(uci_ctx, uci_attendedsysupgrade, "server");
if (!uci_s) {
fprintf(stderr, "Failed to read server config section\n");
return -1;
}
url = uci_lookup_option_string(uci_ctx, uci_s, "url");
if (!url) {
fprintf(stderr, "Failed to read server url from config\n");
return -1;
}
serverurl = strdup(uci_lookup_option_string(uci_ctx, uci_s, "url"));
if (strncmp(url, "https://", strlen("https://")) &&
strncmp(url, "http://", strlen("http://"))) {
fprintf(stderr, "Server url invalid (needs to be http://... or https://...)\n");
return -1;
}
serverurl = strdup(url);
uci_s = uci_lookup_section(uci_ctx, uci_attendedsysupgrade, "client");
if (!uci_s) {