summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/grub/files/fix-endianness-problem.patch
blob: 079992afbae4a7fadb326258d9ec527240d38e4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
grub-core/net/tftp.c: fix endianness problem.

	* grub-core/net/tftp.c (ack): Fix endianness problem.
	(tftp_receive): Likewise.
	Reported by: Michael Davidsaver.

Upstream-Status: Backport

diff --git a/ChangeLog b/ChangeLog
index 81bdae9..c2f42d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
+
+	* grub-core/net/tftp.c (ack): Fix endianness problem.
+	(tftp_receive): Likewise.
+	Reported by: Michael Davidsaver.
+
 2012-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 
 	* configure.ac: Bump version to 2.00.
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
index 9c70efb..d0f39ea 100644
--- a/grub-core/net/tftp.c
+++ b/grub-core/net/tftp.c
@@ -143,7 +143,7 @@ ack (tftp_data_t data, grub_uint16_t block)
 
   tftph_ack = (struct tftphdr *) nb_ack.data;
   tftph_ack->opcode = grub_cpu_to_be16 (TFTP_ACK);
-  tftph_ack->u.ack.block = block;
+  tftph_ack->u.ack.block = grub_cpu_to_be16 (block);
 
   err = grub_net_send_udp_packet (data->sock, &nb_ack);
   if (err)
@@ -225,7 +225,7 @@ tftp_receive (grub_net_udp_socket_t sock __attribute__ ((unused)),
 	    grub_priority_queue_pop (data->pq);
 
 	    if (file->device->net->packs.count < 50)
-	      err = ack (data, tftph->u.data.block);
+	      err = ack (data, data->block + 1);
 	    else
 	      {
 		file->device->net->stall = 1;