From patchwork Fri Nov 20 19:42:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Storm, Christian" X-Patchwork-Id: 1404087 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::63e; helo=mail-ej1-x63e.google.com; envelope-from=swupdate+bncbdd6bwv65qpbbpnx4d6qkgqenj3c3si@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=siemens.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20161025 header.b=KOCt1CqW; dkim-atps=neutral Received: from mail-ej1-x63e.google.com (mail-ej1-x63e.google.com [IPv6:2a00:1450:4864:20::63e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Cd6NQ07Gnz9s1l for ; Sat, 21 Nov 2020 06:40:50 +1100 (AEDT) Received: by mail-ej1-x63e.google.com with SMTP id r2sf923477ejx.9 for ; Fri, 20 Nov 2020 11:40:50 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1605901246; cv=pass; d=google.com; s=arc-20160816; b=gURtcq9eBdCEDIq1t0ZgB7+IpSguHrEPKnGg5wQCwyVtaCvMfW3hOe9mGCQMsD4E5I mLapWg3LSPk86hELY37FHJ9b65n6rPbwS6J9v2Upa/P9hu7dHKFAKmTzUuuYsOEDkAzO xHHWL8sFlmM/AnlOGEKPpN5n/vvo3xBWW0LY+79EqZ7pEV8Ph+ia/M2gfyW8Y9g0jNnx a23e9jaoCHs3ghX6E+M1N5z4CN5zxQkXGxD9l4cizysZ4L0U/lzIZQq45UErecnTr0ZO wp51HtmflX/Ic7LzaK0hzNixKzbNW9wBPFUIfNE1XE6rYAYTwh+2ULZqyN50bhnlupVp YtvQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:message-id:date :subject:cc:to:from:sender:dkim-signature; bh=ElpyiTrNxCmc8tAvvm2ueO6RE1AuKby6g1e6Mq62l0Q=; b=wiy13bzhsbGCVDMb/BdIZr3TFRuQzWXzoCNIgD/pNLYDjbFLtpSRYx01DRnx+5Nk+T fsq4z6jd15y4J+YOnIwGnT60fC7RNRX76RwJh/KxT/yfJ7as2BLabBzX1EdkuZ6Pp1mw mggpLzPpbXGBF5XReh6Tr/ECYh72PLFxTDqR1j3S4pmZqmrJ13L/UR2mvCUiaNx9PHuJ 26+fCKpf3mAUf9s8FUziB3VlzPuY+2rWWf0G/wT6E9+3XWHIBs7sSFppx0TfvQZFfJ+l DbOfZMF4oyS8a2+h1FjSlEfFY7MtHL19XPTt7T852bMcTMThr5QLHRlDQkG+Z6xxQBOS vmdA== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=ElpyiTrNxCmc8tAvvm2ueO6RE1AuKby6g1e6Mq62l0Q=; b=KOCt1CqWmsMcBxgn83cjbs+AF9USicpHO4qbt2LPUAYitxm2UNRgi91L2JFLMDtoAP 2rdP6RbZWoe9yxu0nnzRAep8FrTVHtX6kL9wGCfSk/5sEFTGn+wX3IVrvnU7/woGACVy vtpJdQ5uf4C3oPz44qGslReom/8BaF9/qv9nsI8uTwUXZKkIiZoVrJnbR/f7QOYCTFTm 8p7GgEBx5CdvI3SoM3B602IOTJDJ2/u0aJ22lpZW7rNNiE435crf4LfdkL6Y5Ar8K9H+ yMU0FhaZJ2cKJL9s6mVx9ZWVs+hnnADhMe0eh12sPBGGs3zBUQA9KQ8UcnirShBe6p9Z kNpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:x-spam-checked-in-group:list-post :list-help:list-archive:list-subscribe:list-unsubscribe; bh=ElpyiTrNxCmc8tAvvm2ueO6RE1AuKby6g1e6Mq62l0Q=; b=BP8FaC4EuHqqopdr2NLLYzY8g+I+dY8NzI5UEry6hXuqzB8eAOGd8O+L/i6Rgj+yqI yyXpnNFR8S6pbrGD0ALtJQhvEleqZnZ9iZqRBdJgB85yUbfQZAcG9FfqaEd35A5Z4l9K jFp1EpDAj6Ra5h2AWkWGRc8rSDhH0z3kD/f+IHvIRCtttUpcwcXltnBWl9sE8kQOKY+A Bce43D9pKzCauxboFoCoeKnbM1NNXdTsYkcSwzmfPsKz1mZ/MUxXIpzhH9HknuEywycv KXVuRELlphYYmmeqWTCxyW2/PTGCO0q+RWz3VbJAsx7atP6pjX8KJ8RRTeITETQlnkn5 j+3g== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM530Or5/4C9V/dNGLKg4yx/dX8WnyQH5UHvYlWiTCk1W0Um4KuKVa B6yV9wMmYbJnTJfHcHc6KsE= X-Google-Smtp-Source: ABdhPJyfmz8x9uYHPYvBCcz6a1PQY+4N+Vp/E13ucm3xW9AGZh/H+sifFGsC9go8hsqLt8H+r+Gnfw== X-Received: by 2002:a50:e68a:: with SMTP id z10mr6651480edm.66.1605901246464; Fri, 20 Nov 2020 11:40:46 -0800 (PST) X-BeenThere: swupdate@googlegroups.com Received: by 2002:aa7:cc8b:: with SMTP id p11ls2043613edt.3.gmail; Fri, 20 Nov 2020 11:40:45 -0800 (PST) X-Received: by 2002:a05:6402:1818:: with SMTP id g24mr18537732edy.313.1605901245264; Fri, 20 Nov 2020 11:40:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605901245; cv=none; d=google.com; s=arc-20160816; b=k3CPQ8Ckpa30/HPrIh2a3ikUXHeVR7N9msITkrsk8eSMau7Uy8AzCSvrIYr/RrugVI eyAZHHkXH1In78XuyP37oZdH3p+8Jp7HgctbqxnnD9ykZlu2UADE6zhkbtsZ+3JGyvrk w4gTz7iHC/iD9VciRVOepXiN+X1ehSEirDOe6FKzYq/gVrGYChl36D4T8SemdY6suVx0 Lb/Z8YLtchx0qy7nLc53T3RunfhVmLr8xC8trvpuhjLMlmKPL80xStAeMuuJE1PJZxtn Kj06IPescEEVwySYN71SalrSs2IzK1iNjuc3A1pnfrHBHvcsQIEZ5febgxlPSN2DVRrj wRsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from; bh=IQDG3OHvCiLsSaw1dPORWKQfMn2NpgPdyJtUxT70Mf0=; b=jXcR1Kryhze78sSXACjIjT30F5B6yKk6dsz1FfYMVmGPbHNIDavADa2mD1FVc0Oj0b 71sfNazmQFUREw0h3q4MK45eICBJP7NgljZDp7qrV5lwIj9CjnZrtPXmsNF5zrRi77OE y7sGV0hUxLL85mN92x0VtNu+7wsYBUPc2swGf1KAKNumctOyjLdraaXiA+nlQhLyATyB NMfT4+XoDi9nO2buJtwL0U2PLgAXmhgG+xCkHXsx9GAfcgK+pl6cwX0n/Aav3ZhLCrP5 Q72M32+CwzUOv6X3SjanYZvpx1W7OXQHZopjuNPC5zWSpxfrH2kjlKIOW2eQFOH2yNv5 6o0Q== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id v7si232467edj.5.2020.11.20.11.40.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 11:40:45 -0800 (PST) Received-SPF: pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id 0AKJeiLp012192 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 20 Nov 2020 20:40:44 +0100 Received: from MD1ZFJVC.ad001.siemens.net ([167.87.0.54]) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id 0AKJei9e028115; Fri, 20 Nov 2020 20:40:44 +0100 From: Christian Storm To: swupdate@googlegroups.com Cc: Christian Storm Subject: [swupdate] [PATCH] Fix setting bootloader transaction marker Date: Fri, 20 Nov 2020 20:42:08 +0100 Message-Id: <20201120194208.113859-1-christian.storm@siemens.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-Original-Sender: christian.storm@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , do_save_state()'s value range check is for update_state_t values and most probably fails on string values like "in_progress" as used by the bootloader transaction marker. While at it, cover all update_state_t values in get_state_string(). Signed-off-by: Christian Storm --- core/state.c | 8 +++++++- include/state.h | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/state.c b/core/state.c index e1ce5fe..8ddd760 100644 --- a/core/state.c +++ b/core/state.c @@ -60,7 +60,13 @@ server_op_res_t save_state(char *key, update_state_t value) server_op_res_t save_state_string(char *key, update_state_t value) { - return do_save_state(key, get_state_string(value)); + CHECK_STATE_VAR(key); + if (!value) + return -EINVAL; + if (value < STATE_OK || value > STATE_LAST) + return -EINVAL; + return bootloader_env_set(key, get_state_string(value)) == 0 ? + SERVER_OK : SERVER_EERR; } server_op_res_t read_state(char *key, update_state_t *value) diff --git a/include/state.h b/include/state.h index e6c6cfa..f006b6c 100644 --- a/include/state.h +++ b/include/state.h @@ -52,9 +52,15 @@ static inline char* get_state_string(update_state_t state) { switch (state) { case STATE_IN_PROGRESS: return (char*)"in_progress"; case STATE_FAILED: return (char*)"failed"; + case STATE_OK: return (char*)"ok"; + case STATE_INSTALLED: return (char*)"installed"; + case STATE_TESTING: return (char*)"testing"; + case STATE_NOT_AVAILABLE: return (char*)"not_available"; + case STATE_ERROR: return (char*)"error"; + case STATE_WAIT: return (char*)"wait"; default: break; } - return (char*)state; + return (char*)""; } server_op_res_t save_state(char *key, update_state_t value);