From f3965fc28fc79bbf22caf6c452068163e41ef22a Mon Sep 17 00:00:00 2001
From: James <james.mckenzie@citrix.com>
Date: Fri, 16 Nov 2012 20:36:24 +0000
Subject: fsih

---
 master/jmm/efi-sni-bis | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/master/jmm/efi-sni-bis b/master/jmm/efi-sni-bis
index d63ec90..ed6df12 100644
--- a/master/jmm/efi-sni-bis
+++ b/master/jmm/efi-sni-bis
@@ -65,10 +65,18 @@ index f73f828..fe6971c 100644
  
  void
 diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
-index 5dd5ada..0ec088e 100644
+index 5dd5ada..74bbd47 100644
 --- a/grub-core/loader/efi/chainloader.c
 +++ b/grub-core/loader/efi/chainloader.c
-@@ -225,7 +225,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
+@@ -32,6 +32,7 @@
+ #include <grub/efi/api.h>
+ #include <grub/efi/efi.h>
+ #include <grub/efi/disk.h>
++#include <grub/efi/net.h>
+ #include <grub/command.h>
+ #include <grub/i18n.h>
+ 
+@@ -225,7 +226,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
  	dp = grub_efi_get_device_path (dev_handle);
      }
  
@@ -86,10 +94,10 @@ index 5dd5ada..0ec088e 100644
        goto fail;
 diff --git a/grub-core/net/efi/efinet.c b/grub-core/net/efi/efinet.c
 new file mode 100644
-index 0000000..f26aec1
+index 0000000..1d30655
 --- /dev/null
 +++ b/grub-core/net/efi/efinet.c
-@@ -0,0 +1,541 @@
+@@ -0,0 +1,544 @@
 +/* efinet.c - EFI network access using SNI.  */
 +/*
 + *  GRUB  --  GRand Unified Bootloader
@@ -122,6 +130,8 @@ index 0000000..f26aec1
 +#include <grub/time.h>
 +
 +
++#define SNI_DEV_NAME_LEN 10
++
 +static grub_err_t grub_efinet_start (struct grub_net *);
 +
 +static grub_ether_addr ether_broadcast =
@@ -525,7 +535,7 @@ index 0000000..f26aec1
 +grub_efinet_close (struct grub_net *net)
 +{
 +  grub_efinet_stop (net);
-+  grub_free (net->name);
++  grub_free ((void *) net->name); /*name is const char * */
 +}
 +
 +
@@ -595,35 +605,36 @@ index 0000000..f26aec1
 +};
 +
 +grub_efi_handle_t
-+grub_net_efinet_get_device_handle(struct grub_net *net)
++grub_efinet_get_device_handle(struct grub_net *net)
 +{
 +  struct grub_sni_data *private = (struct grub_sni_data *) net->data;
 +  return private->handle;
 +}
 +
 +void
-+grub_net_efinet_init (void)
++grub_efinet_init (void)
 +{
 +  enumerate_snis ();
 +  grub_net_dev_register (&sni_net_dev);
 +}
 +
 +void
-+grub_net_efinet_fini (void)
++grub_efinet_fini (void)
 +{
 +  grub_net_dev_unregister (&sni_net_dev);
 +  free_devices (sni_devices);
 +}
 +
-+char * grub_net_efinet_get_device_name(grub_efi_handle_t h)
++char * grub_efinet_get_device_name(grub_efi_handle_t *h)
 +{
 +  struct grub_sni_data *p;
 +  int i=0;
 +
-+  while (p=get_device(i)) {
++  while ((p=get_device(i))) {
 +    if (p && (p->handle == h)) {
-+      char *ret=grub_malloc (10); //FIXME
-+      grub_sprintf(ret,"sni%d",i);
++      char *ret=grub_malloc (SNI_DEV_NAME_LEN); 
++      grub_snprintf(ret,SNI_DEV_NAME_LEN,"sni%d",i);
++      ret[SNI_DEV_NAME_LEN-1] = 0;
 +      return ret;
 +    }
 +    i++;
-- 
cgit v1.2.3