[grub2: 4/6] Revert "Rebuild with newer pesign so we'll get signed with the final signing keys."

Peter Jones pjones at fedoraproject.org
Mon Oct 22 18:40:38 UTC 2012


commit 09ea065fc49e795b97b79b09b04f221a7e1d7e94
Author: Peter Jones <pjones at redhat.com>
Date:   Mon Oct 22 14:39:02 2012 -0400

    Revert "Rebuild with newer pesign so we'll get signed with the final signing keys."
    
    This reverts commit 1a0dbd064134b7280cbf9b58b98756cfd814c70f.

 grub-2.00-Handle-escapes-in-labels.patch |  131 +++++++++++-------------------
 grub2.spec                               |    5 +-
 2 files changed, 48 insertions(+), 88 deletions(-)
---
diff --git a/grub-2.00-Handle-escapes-in-labels.patch b/grub-2.00-Handle-escapes-in-labels.patch
index 0e4c5e5..65a2a41 100644
--- a/grub-2.00-Handle-escapes-in-labels.patch
+++ b/grub-2.00-Handle-escapes-in-labels.patch
@@ -1,21 +1,19 @@
-From 20ce60f211cef5f2c553130ba24b049381915252 Mon Sep 17 00:00:00 2001
+From d08e2511db353b2db9c5785d3f22079674abd708 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 1 Oct 2012 13:24:37 -0400
-Subject: [PATCH] Handle "\x[[:hex:]][[:hex:]]" style escapes as well.
+Subject: [PATCH] Pass "\x[[:hex:]][[:hex:]]" straight through unmolested.
 
-Sometimes we need to escape spaces and such in the config file, and we
-do so by passing them in hex.
 ---
- grub-core/commands/wildcard.c | 26 +++++++++++++++++++-
- grub-core/lib/cmdline.c       | 44 ++++++++++++++++++++++++++++++++--
- grub-core/script/execute.c    | 55 ++++++++++++++++++++++++++++++++++++++-----
- 3 files changed, 116 insertions(+), 9 deletions(-)
+ grub-core/commands/wildcard.c | 16 +++++++++++++++-
+ grub-core/lib/cmdline.c       | 34 +++++++++++++++++++++++++++++++--
+ grub-core/script/execute.c    | 44 +++++++++++++++++++++++++++++++++++++------
+ 3 files changed, 85 insertions(+), 9 deletions(-)
 
 diff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c
-index 2b73d9a..8ea76c9 100644
+index 2b73d9a..d1235dc 100644
 --- a/grub-core/commands/wildcard.c
 +++ b/grub-core/commands/wildcard.c
-@@ -420,6 +420,23 @@ check_file (const char *dir, const char *basename)
+@@ -420,6 +420,12 @@ check_file (const char *dir, const char *basename)
    return found;
  }
  
@@ -25,30 +23,20 @@ index 2b73d9a..8ea76c9 100644
 +  return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
 +}
 +
-+static grub_int32_t
-+hex_to_int(char c)
-+{
-+  int i = c | 0x20;
-+  if (i >= '0' && i < '9')
-+    return i - '0';
-+  if (i >= 'a' && i < 'f')
-+    return i - ('a' - 10);
-+  return -1;
-+}
-+
  static void
  unescape (char *out, const char *in, const char *end)
  {
-@@ -428,7 +445,14 @@ unescape (char *out, const char *in, const char *end)
+@@ -428,7 +434,15 @@ unescape (char *out, const char *in, const char *end)
  
    for (optr = out, iptr = in; iptr < end;)
      {
 -      if (*iptr == '\\' && iptr + 1 < end)
 +      if (*iptr == '\\' && iptr + 3 < end && iptr[1] == 'x' && is_hex(iptr[2]) && is_hex(iptr[3]))
 +	{
-+	  int a = (hex_to_int(iptr[2]) << 4) | (hex_to_int(iptr[3]) & 0xf);
-+	  *optr++ = a & 0xff;
-+	  iptr += 4;
++	  *optr++ = *iptr++;
++	  *optr++ = *iptr++;
++	  *optr++ = *iptr++;
++	  *optr++ = *iptr++;
 +	  continue;
 +	}
 +      else if (*iptr == '\\' && iptr + 1 < end)
@@ -56,7 +44,7 @@ index 2b73d9a..8ea76c9 100644
  	  *optr++ = iptr[1];
  	  iptr += 2;
 diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c
-index a702e64..78a96fa 100644
+index a702e64..c8605a7 100644
 --- a/grub-core/lib/cmdline.c
 +++ b/grub-core/lib/cmdline.c
 @@ -20,6 +20,12 @@
@@ -87,44 +75,27 @@ index a702e64..78a96fa 100644
  	size++;
        else if (*c == ' ')
  	space = 1;
-@@ -59,6 +71,17 @@ unsigned int grub_loader_cmdline_size (int argc, char *argv[])
-   return size;
- }
- 
-+static grub_int32_t
-+hex_to_int(char c)
-+{
-+  int i = c | 0x20;
-+  if (i >= '0' && i < '9')
-+    return i - '0';
-+  if (i >= 'a' && i < 'f')
-+    return i - ('a' - 10);
-+  return -1;
-+}
-+
- int grub_create_loader_cmdline (int argc, char *argv[], char *buf,
- 				grub_size_t size)
- {
-@@ -82,7 +105,24 @@ int grub_create_loader_cmdline (int argc, char *argv[], char *buf,
+@@ -82,7 +94,25 @@ int grub_create_loader_cmdline (int argc, char *argv[], char *buf,
  
        while (*c)
  	{
 -	  if (*c == '\\' || *c == '\'' || *c == '"')
-+	  if (*c < 0x21 || *c > 0x7e)
++	  if (*c == ' ')
 +	    {
-+	      char int_to_hex[] = "0123456789abcdef";
 +	      *buf++ = '\\';
 +	      *buf++ = 'x';
-+	      *buf++ = int_to_hex[(*c & 0xf0) >> 4];
-+	      *buf++ = int_to_hex[*c & 0xf];
++	      *buf++ = '2';
++	      *buf++ = '0';
 +	      c++;
 +	      continue;
 +	    }
-+	  else if (c[0] == '\\' && c[1] == 'x' && is_hex(c[2]) && is_hex(c[3]))
++	  else if (*c == '\\' && *(c+1) == 'x' &&
++		   is_hex(*(c+2)) && is_hex(*(c+3)))
 +	    {
-+	      int a = (hex_to_int(c[2]) << 4) | (hex_to_int(c[3]) & 0xf);
-+	      *buf++ = a & 0xff;
-+	      c += 4;
++	      *buf++ = *c++;
++	      *buf++ = *c++;
++	      *buf++ = *c++;
++	      *buf++ = *c++;
 +	      continue;
 +	    }
 +	  else if (*c == '\\' || *c == '\'' || *c == '"')
@@ -132,10 +103,10 @@ index a702e64..78a96fa 100644
  
  	  *buf++ = *c;
 diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
-index b5e6eb0..85a4bea 100644
+index b5e6eb0..c44eced 100644
 --- a/grub-core/script/execute.c
 +++ b/grub-core/script/execute.c
-@@ -52,6 +52,23 @@ static struct grub_script_scope *scope = 0;
+@@ -52,6 +52,12 @@ static struct grub_script_scope *scope = 0;
  /* Wildcard translator for GRUB script.  */
  struct grub_script_wildcard_translator *grub_wildcard_translator;
  
@@ -145,55 +116,47 @@ index b5e6eb0..85a4bea 100644
 +  return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
 +}
 +
-+static grub_int32_t
-+hex_to_int(char c)
-+{
-+  int i = c | 0x20;
-+  if (i >= '0' && i < '9')
-+    return i - '0';
-+  if (i >= 'a' && i < 'f')
-+    return i - ('a' - 10);
-+  return -1;
-+}
-+
  static char*
  wildcard_escape (const char *s)
  {
-@@ -68,7 +85,16 @@ wildcard_escape (const char *s)
+@@ -68,7 +74,15 @@ wildcard_escape (const char *s)
    i = 0;
    while ((ch = *s++))
      {
 -      if (ch == '*' || ch == '\\' || ch == '?')
-+      if (ch < 0x21 || ch > 0x7e)
++      if (ch == '\\' && s[0] == 'x' && is_hex(s[1]) && is_hex(s[2]))
 +	{
-+	  char int_to_hex[] = "0123456789abcdef";
-+	  p[i++] = '\\';
-+	  p[i++] = 'x';
-+	  p[i++] = int_to_hex[(ch & 0xf0) >> 4];
-+	  p[i++] = int_to_hex[ch & 0xf];
++	  p[i++] = ch;
++	  p[i++] = *s++;
++	  p[i++] = *s++;
++	  p[i++] = *s++;
 +	  continue;
 +	}
 +      else if (ch == '*' || ch == '\\' || ch == '?')
  	p[i++] = '\\';
        p[i++] = ch;
      }
-@@ -92,7 +118,14 @@ wildcard_unescape (const char *s)
+@@ -92,7 +106,14 @@ wildcard_unescape (const char *s)
    i = 0;
    while ((ch = *s++))
      {
 -      if (ch == '\\')
 +      if (ch == '\\' && s[0] == 'x' && is_hex(s[1]) && is_hex(s[2]))
 +	{
-+	  int a = (hex_to_int(s[1]) << 4) | (hex_to_int(s[2]) & 0xf);
-+	  p[i++] = a & 0xff;
-+	  s += 3;
-+	  continue;
++	  p[i++] = '\\';
++	  p[i++] = *s++;
++	  p[i++] = *s++;
++	  p[i++] = *s++;
 +	}
 +      else if (ch == '\\')
  	p[i++] = *s++;
        else
  	p[i++] = ch;
-@@ -385,10 +418,20 @@ parse_string (const char *str,
+@@ -381,14 +402,24 @@ parse_string (const char *str,
+   int escaped = 0;
+   const char *optr;
+ 
+   for (ptr = str; ptr && *ptr; )
      switch (*ptr)
        {
        case '\\':
@@ -201,12 +164,12 @@ index b5e6eb0..85a4bea 100644
 -	if (!escaped && put)
 -	  *((*put)++) = '\\';
 -	ptr++;
-+	if (!escaped && put && ptr[1] == 'x' && is_hex(ptr[2]) &&
-+						is_hex(ptr[3]))
++	if (!escaped && put && *(ptr+1) == 'x' && is_hex(*(ptr+2)) && is_hex(*(ptr+3)))
 +	  {
-+	    int a = (hex_to_int(ptr[2]) << 4) | (hex_to_int(ptr[3]) & 0xf);
-+	    *((*put)++) = a & 0xff;
-+	    ptr += 4;
++	    *((*put)++) = *ptr++;
++	    *((*put)++) = *ptr++;
++	    *((*put)++) = *ptr++;
++	    *((*put)++) = *ptr++;
 +	  }
 +	else
 +	  {
diff --git a/grub2.spec b/grub2.spec
index 8c64265..4651d32 100644
--- a/grub2.spec
+++ b/grub2.spec
@@ -90,7 +90,7 @@ BuildRequires:	freetype-devel gettext-devel git
 BuildRequires:	texinfo
 BuildRequires:	dejavu-sans-fonts
 %ifarch %{efiarchs}
-BuildRequires:	pesign >= 0.99-8
+BuildRequires:	pesign >= 0.10-3
 %endif
 
 Requires:	gettext os-prober which file system-logos
@@ -425,9 +425,6 @@ fi
 %doc grub-%{tarversion}/themes/starfield/COPYING.CC-BY-SA-3.0
 
 %changelog
-* Mon Oct 22 2012 Peter Jones <pjones at redhat.com> - 2.00-10
-- Rebuild with newer pesign so we'll get signed with the final signing keys.
-
 * Thu Oct 18 2012 Peter Jones <pjones at redhat.com> - 2.00-10
 - Various PPC fixes.
 - Fix crash fetching from http (gustavold, #860834)


More information about the scm-commits mailing list