mirror of
https://src.fedoraproject.org/rpms/grub2.git
synced 2024-11-28 07:44:52 +00:00
7e98da058f
This change reorganizes and cleanups our patches to reduce the patch number from 314 patches to 187. That's achieved by dropping patches that are later reverted and squashing fixes for earlier patches that introduced features. There are no code changes and the diff with upstream is the same before and after the cleanup. Having fewer patches makes easier to manage the patchset and also will ease to rebase them on top of the latest grub-2.04 release. Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
61 lines
1.9 KiB
Diff
61 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Lenny Szubowicz <lszubowi@redhat.com>
|
|
Date: Mon, 29 Aug 2016 11:04:48 -0400
|
|
Subject: [PATCH] Normalize slashes in tftp paths.
|
|
|
|
Some tftp servers do not handle multiple consecutive slashes correctly;
|
|
this patch avoids sending tftp requests with non-normalized paths.
|
|
|
|
Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com>
|
|
[msalter: fix malformed tftp packets]
|
|
Signed-off-by: Mark Salter <msalter@redhat.com>
|
|
---
|
|
grub-core/net/tftp.c | 28 +++++++++++++++++++++++++---
|
|
1 file changed, 25 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
|
|
index 1157524fc50..dcd82494309 100644
|
|
--- a/grub-core/net/tftp.c
|
|
+++ b/grub-core/net/tftp.c
|
|
@@ -300,6 +300,25 @@ destroy_pq (tftp_data_t data)
|
|
grub_priority_queue_destroy (data->pq);
|
|
}
|
|
|
|
+/* Create a normalized copy of the filename.
|
|
+ Compress any string of consecutive forward slashes to a single forward
|
|
+ slash. */
|
|
+static void
|
|
+grub_normalize_filename (char *normalized, const char *filename)
|
|
+{
|
|
+ char *dest = normalized;
|
|
+ char *src = filename;
|
|
+
|
|
+ while (*src != '\0')
|
|
+ {
|
|
+ if (src[0] == '/' && src[1] == '/')
|
|
+ src++;
|
|
+ else
|
|
+ *dest++ = *src++;
|
|
+ }
|
|
+ *dest = '\0';
|
|
+}
|
|
+
|
|
static grub_err_t
|
|
tftp_open (struct grub_file *file, const char *filename)
|
|
{
|
|
@@ -337,9 +356,12 @@ tftp_open (struct grub_file *file, const char *filename)
|
|
rrqlen = 0;
|
|
|
|
tftph->opcode = grub_cpu_to_be16_compile_time (TFTP_RRQ);
|
|
- grub_strcpy (rrq, filename);
|
|
- rrqlen += grub_strlen (filename) + 1;
|
|
- rrq += grub_strlen (filename) + 1;
|
|
+
|
|
+ /* Copy and normalize the filename to work-around issues on some tftp
|
|
+ servers when file names are being matched for remapping. */
|
|
+ grub_normalize_filename (rrq, filename);
|
|
+ rrqlen += grub_strlen (rrq) + 1;
|
|
+ rrq += grub_strlen (rrq) + 1;
|
|
|
|
grub_strcpy (rrq, "octet");
|
|
rrqlen += grub_strlen ("octet") + 1;
|