From patchwork Tue Oct 13 06:35:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Storm, Christian" X-Patchwork-Id: 1381329 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::23e; helo=mail-lj1-x23e.google.com; envelope-from=swupdate+bncbdd6bwv65qpbbievsx6akgqee2nn7hq@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=fuaFusQD; dkim-atps=neutral Received: from mail-lj1-x23e.google.com (mail-lj1-x23e.google.com [IPv6:2a00:1450:4864:20::23e]) (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 4C9QlY2Dptz9sTL for ; Tue, 13 Oct 2020 17:35:17 +1100 (AEDT) Received: by mail-lj1-x23e.google.com with SMTP id h14sf7302873ljj.3 for ; Mon, 12 Oct 2020 23:35:17 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1602570913; cv=pass; d=google.com; s=arc-20160816; b=PrViegistKVKpbIkrYelAMBt94jJNgGnkCS76SoLrtso1IsxDKQV/kpRgLZhLEDD6d QUxRJcR3DYtf4qcuwWzi4XrosacuDMwMW3IR6fIpnHhiZIfIFGvlkZHyOKEG2s3xk3bM 452iS/miJoJD0HBUituMLjOpMhhIqoAA97oLjEO5+oQCvpX6QcmI5aG1G5dPaJYUXIjH APUfkMxjNmot0oJkWOj/HNJoKA0KttpPb4oo8hLNZs5looDLVLp+xpEQe0KSybpNEsjZ 8ZWupiMCL0YE3qFO8o8MCKTYWew33+lFTZ5rPXDqOiE3cYko6Eu+wpdBeax+9LG6kh1A zDCQ== 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=BAT52GpB3+hRQG93C4VrMV24+Pd+2e3v0vcArwRhBB4=; b=sa560pQxOPJFAjapcVjO6ThaqTGSFU1KnMb+IU0p2X+puErW0mYVMaMMatd5oug/Jy JwHXp6eKALidlpanVrIpFjcw4rdPSHfM43XaLUGdb/0oB2rmwcgo9H8ODb/m+0cf65Rl IEKFFFvxaxkpSK02KOsUEuDbFlFKqarRxttG5eUDyfbuIwSKjrB1T4w3zaKQ/JAbfsuQ jaNKwDQv0hqU2o4qSTAmTCHUmB4figZXqO8MpOp7mCMC4rTO/cdabvWUGXMNDk0sw9z9 JG2+ZLPCoexnZebzkWDtZqoHhrLob7Gud+QbgG9MX5ROBXMST6F8wG6EW5ZJvk2Cejcl J0Tw== 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=BAT52GpB3+hRQG93C4VrMV24+Pd+2e3v0vcArwRhBB4=; b=fuaFusQDojB7e+dcX8DI6s6aKh+QWYufsUUcGYYSK1LwBiP1GSH+VN2TbXkbb/Ry+S MPjvhGDJaF0StHEInECzsIZhmG8KyLnB9uew5gH8uRCpzNfD0qM6SgVs0V+e+5NIHMfZ btkdEM1N+OxRLJD7T8tdaPK3H47HsIAVhmAdbEJHYLM3ysmXQLHTW8NvCn3bFywLJ+Hd ykX1tn6xHCLaNHzAY4k5xI6N+HLvts5WYvynhJamjA+To1kIwF45Ml8VMwr3gJwJ+1Jh tWeMKWnBa6pd9soM+0WMvA2b52Ba2e9/xA9YDw5nb5FMXxbTCG6RdzjOfYYWIJPWstmx S54A== 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=BAT52GpB3+hRQG93C4VrMV24+Pd+2e3v0vcArwRhBB4=; b=htErifdOdflPqTcaz+SlXEBtAPs+SIzK3d/RCz0PiVG5fZzBVp5PjrXIbhyOAf5SsH tDtO6AxXBmMDcZdwJlgoTDxocQBpyvq914ovb2FIqV+h9d2qmOcVylbbDWwexrFuuYTM JMUoo5wylkM29/sRSAaF24TUeBz0XnerRaKfdFT1WjGgQN0b0QJmfUJvBHPwZVV/lMZb 9CfwGqPbY3r49dZMU2elkzMtt83J4tEqOc0uFvcr8i9dNZ7nra3H9CQxAlLAcJQx7Yge Fq6EKvDfsfXc1PYYAvGZqlgxwxltRHZ51rlQ+3CkRjlYcaQYORu0guv0Su6oBCKpuXPH kSgg== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM531GJGUy1SMx4zA3pHkTlEdTodlyx619rW7QXyp6tafCFtYMf7uy 7bVekFbtCthZxdbismsAOsc= X-Google-Smtp-Source: ABdhPJzxHeKhrBkVz3dM9Q2JXknAqcm8NBv+EWK6oX505VqMvtalseCaDjJ+0qvL5PG9loW0zmx26g== X-Received: by 2002:ac2:48bb:: with SMTP id u27mr108947lfg.578.1602570913143; Mon, 12 Oct 2020 23:35:13 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a19:c7c8:: with SMTP id x191ls497076lff.0.gmail; Mon, 12 Oct 2020 23:35:11 -0700 (PDT) X-Received: by 2002:a19:4a83:: with SMTP id x125mr9916032lfa.38.1602570911891; Mon, 12 Oct 2020 23:35:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602570911; cv=none; d=google.com; s=arc-20160816; b=ByZF5JaoDevAD/Jjs5I+hMH+X1NIN185Qo825U+cjconMn4l4Cbp74gxJDJrmMgwwq wDlFyka7x/9M81kiQ4d8BvvLb0qC5JnmLezM0ZXikO9d1cSgjI/JzbaBIPXWvmQAGFbW WRPnmUw4dcUOlJ9DrV4ZfVX66gVN7LPC9wgBbrt2wOHxqzQLlwk5OkXmBikxgtytg3ID IoIcy9KvsuQ10bPNeJE/kikHs52Fuxl+c9JqDF9Mcqgxag1uaKGQQIGPGbLWifP36y0l wrnXJDwjNI9BwXnVzL11dtwafFaQl0GlrZ9Ha/+duEkeYMC9Fh99kRdMMxiiwawHmh1a HsSA== 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=eTfrVbpqtx7WSuFNiYmZcKMTsCvYzrj4b8qV7znG054=; b=qiKOIwCwvijJvd/+bH1PTM/kIfvaFtpEGCvzVIdC2E3c2JvDCBC6k+jJ8yYYPkV4ED QpcLgGKiGwztAnq5uO8owQdyPO3jtQXQFtiO6X/pz2wkE90Ji2gH8NbZJfoGbBT5KIWu JCCWsFZz2w0/kl8cScMeVJ+W3vmACsoZP/0kxIvpPxZAfNDcr/XSVEeSBHRoSf6aIa/W YlNrczHaP8cGvLdUyeOSVYL3t+/avYFQNqrafgb9AC2t7KetuJDd+OOEjgozYLQugEHd BEJcmJYq9JhEXowCNlwN+/2b6kx9IS2MLyUaG8uS/1ZXI7PU0b8TDIqUef4ukPyVp79D U6tA== 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 e1si702356ljg.6.2020.10.12.23.35.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Oct 2020 23:35:11 -0700 (PDT) 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 mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id 09D6ZBDL024842 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 13 Oct 2020 08:35:11 +0200 Received: from MD1ZFJVC.ad001.siemens.net ([139.22.119.150]) by mail3.siemens.de (8.15.2/8.15.2) with ESMTP id 09D6ZA2B015195; Tue, 13 Oct 2020 08:35:10 +0200 From: Christian Storm To: swupdate@googlegroups.com Cc: Christian Storm Subject: [swupdate] [libubootenv] uboot_env: fix infinite loop on short read (EOF) Date: Tue, 13 Oct 2020 08:35:23 +0200 Message-Id: <20201013063523.3653-1-christian.storm@siemens.com> X-Mailer: git-send-email 2.28.0 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: , If the U-Boot environment configuration file fw_env.config happens to have specified a length larger than the actual file's size, the result is an infinite loop. Hence, check read()'s return value for being 0, meaning EOF, and return an error. Signed-off-by: Christian Storm Acked-by: Stefano Babic --- src/uboot_env.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/uboot_env.c b/src/uboot_env.c index 84c590a..e216da7 100644 --- a/src/uboot_env.c +++ b/src/uboot_env.c @@ -460,6 +460,9 @@ static int fileread(struct uboot_flash_env *dev, void *data) while (1) { ret = read(dev->fd, data, remaining); + if (ret == 0 && remaining > 0) + return -1; + if (ret < 0) break;