]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/script/execute.c (grub_script_arglist_to_argv): Escape
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 21 Jun 2012 20:02:09 +0000 (22:02 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 21 Jun 2012 20:02:09 +0000 (22:02 +0200)
blocks.

ChangeLog
grub-core/script/execute.c

index bf5279ed249680c2e139ffcd7fe6ef74807104ad..bb81ff123b34fe59d0de20c8d830034bdf52175b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-21  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/script/execute.c (grub_script_arglist_to_argv): Escape
+       blocks.
+
 2012-06-21  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Fix double
index 8855bc126ea7e80d43563b60d0d89e4415daa5be..b5e6eb05ea092053a38fdbff8d358468e45d4442 100644 (file)
@@ -642,11 +642,23 @@ grub_script_arglist_to_argv (struct grub_script_arglist *arglist,
              break;
 
            case GRUB_SCRIPT_ARG_TYPE_BLOCK:
-             if (grub_script_argv_append (&result, "{", 1)
-                 || grub_script_argv_append (&result, arg->str,
-                                             grub_strlen (arg->str))
-                 || grub_script_argv_append (&result, "}", 1))
-               goto fail;
+             {
+               char *p;
+               if (grub_script_argv_append (&result, "{", 1))
+                 goto fail;
+               p = wildcard_escape (arg->str);
+               if (!p)
+                 goto fail;
+               if (grub_script_argv_append (&result, p,
+                                            grub_strlen (p)))
+                 {
+                   grub_free (p);
+                   goto fail;
+                 }
+               grub_free (p);
+               if (grub_script_argv_append (&result, "}", 1))
+                 goto fail;
+             }
              result.script = arg->script;
              break;