From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1n8WIW-0006D0-NA for mharc-grub-devel@gnu.org; Fri, 14 Jan 2022 18:48:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n8WIL-00069q-3x for grub-devel@gnu.org; Fri, 14 Jan 2022 18:47:45 -0500 Received: from [2a00:1450:4864:20::32a] (port=56093 helo=mail-wm1-x32a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n8WI9-0008NC-Vv for grub-devel@gnu.org; Fri, 14 Jan 2022 18:47:36 -0500 Received: by mail-wm1-x32a.google.com with SMTP id c66so8991555wma.5 for ; Fri, 14 Jan 2022 15:47:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=99NnzMqcyH2gzK+P5J8qGVq8/+iWmWrDyNSW89OaUQ4=; b=g4ycSXAZklnFmkkase+p+nR5Mh+BVAlOQMKWTwk7p+a4Kpy2+hzZ7SeK6V1SZSQUve aYrj4XNkQYUFvGuQAWILpPE2Lr4Pb0NgwTZQnOL6OxY852OJ3xtMYH2i7r//NfK5hfO+ 1hWycjoC56ULBfifa2ARG28Josa2n9Sq7bSEpMmfmFn6a78hOfV3tKIdQQ4BNJIpxWtz p2WHOgx+p44//ZEPIUqTltxStMf/zif322Yt3QwAVOoh26FwJebd8/nboLVJ/UPWxe3g G51AMqf4ub3CZ9fiVNYny008QSRIS1GvLjnybebpE/WJFGiDQyqPEXbI7fhdeP/0j9U5 x4bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=99NnzMqcyH2gzK+P5J8qGVq8/+iWmWrDyNSW89OaUQ4=; b=vkMJDn0rWsf41aaS5gaG0GgLzZkPK9/LEeY7CS7YOGnhydQyQ18AZ+CoZ+Angi7tnp ITsMjK1JgdYqIrdWZVLxiHNLCmis/v7B+oXd2Pll276DLhHn7TH/kFpNRzZ+w/7VviCB iolJZd+SsVeQgJCyt+MFj43cZYfzcTxG++16TPPsiHN5K5uzCtar99XZg0AQVmbp2rFI TDIa2QLo2k99NpuAExmP1RBykISEdrn+s6pTmoeHJh6Hqelp+ZzPSABuWzVLwbFGmx8M 2xYba7mgTIA3HSZrVYmvQi1Jd0MO5KLSe2ylz2ShxPyx5voxNcGpAmO4GbBdDe2He/ZG VwxQ== X-Gm-Message-State: AOAM533Re282eSJAe+NDO7j/padaO2CQKUAAyLiq4ffbuLxCLhxC/bVp 6xDJpX7W7Ijn6AEaa9XNzytSAHMkJS5tlRuc X-Google-Smtp-Source: ABdhPJxXdWQo4TsYC1PX7iS8Io1x5Og76Y6eUbQVHFqxHLPUipJu6UZl58mf7ndL0DQ3ZvDy5RXSvg== X-Received: by 2002:a5d:53ca:: with SMTP id a10mr10848456wrw.624.1642204039370; Fri, 14 Jan 2022 15:47:19 -0800 (PST) Received: from localhost.localdomain (17.red-81-39-144.dynamicip.rima-tde.net. [81.39.144.17]) by smtp.gmail.com with ESMTPSA id g15sm6802283wrm.2.2022.01.14.15.47.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jan 2022 15:47:19 -0800 (PST) From: Jamo To: grub-devel@gnu.org Cc: Jamo Subject: [PATCH] http: parse HTTP headers case-insensitive Date: Sat, 15 Jan 2022 00:46:39 +0100 Message-Id: <20220114234638.22208-1-jamofer@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::32a (failed) Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=jamofer@gmail.com; helo=mail-wm1-x32a.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Jan 2022 23:47:45 -0000 According to https://www.ietf.org/rfc/rfc2616.txt 4.2, header names shall be case insensitive and we are now forced to read headers like "Content-Length" capitalized. The problem with that is when a HTTP server responds with a "content-length" header in lowercase, GRUB gets stuck because HTTP module doesn't know the length of the transmission and the call never ends. --- grub-core/net/http.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/grub-core/net/http.c b/grub-core/net/http.c index b616cf40b..d3ba8c799 100644 --- a/grub-core/net/http.c +++ b/grub-core/net/http.c @@ -130,7 +130,7 @@ parse_line (grub_file_t file, http_data_t data, char *ptr, grub_size_t len) data->first_line_recv = 1; return GRUB_ERR_NONE; } - if (grub_memcmp (ptr, "Content-Length: ", sizeof ("Content-Length: ") - 1) + if (grub_strncasecmp (ptr, "Content-Length: ", sizeof ("Content-Length: ") - 1) == 0 && !data->size_recv) { ptr += sizeof ("Content-Length: ") - 1; @@ -138,8 +138,8 @@ parse_line (grub_file_t file, http_data_t data, char *ptr, grub_size_t len) data->size_recv = 1; return GRUB_ERR_NONE; } - if (grub_memcmp (ptr, "Transfer-Encoding: chunked", - sizeof ("Transfer-Encoding: chunked") - 1) == 0) + if (grub_strncasecmp (ptr, "Transfer-Encoding: chunked", + sizeof ("Transfer-Encoding: chunked") - 1) == 0) { data->chunked = 1; return GRUB_ERR_NONE; -- 2.32.0