Do not fill in the BufferLimit field in struct
s_PXENV_GET_CACHED_INFO, because this field doesn't exist in earlier
versions of the PXE spec, and some callers don't allocate space for it.

From gpxe.git:
commit 3a2473f123abf4e76dee85da47e8a025d93642b4
Author: Michael Brown <mcb30@etherboot.org>
Date:   Thu Nov 22 00:31:21 2007 +0000

Index: etherboot-5.4.3/src/core/pxe_export.c
===================================================================
--- etherboot-5.4.3.orig/src/core/pxe_export.c	2008-07-02 15:20:07.000000000 -0700
+++ etherboot-5.4.3/src/core/pxe_export.c	2008-07-02 15:25:01.000000000 -0700
@@ -1127,8 +1127,38 @@
 	memcpy ( &cached_info->vendor.d, bootp_data.bootp_reply.bp_vend,
 		 sizeof(cached_info->vendor.d) );
 	
+#if 0
+	/* The case in which the caller doesn't supply a buffer is
+	 * really awkward to support given that we have multiple
+	 * sources of options, and that we don't actually store the
+	 * DHCP packets.  (We may not even have performed DHCP; we may
+	 * have obtained all configuration from non-volatile stored
+	 * options or from the command line.)  We provide the caller
+	 * with our base-memory temporary packet buffer and construct
+	 * the packet in there.
+	 *
+	 * To add to the fun, Intel decided at some point in the
+	 * evolution of the PXE specification to add the BufferLimit
+	 * field, which we are meant to fill in with the length of our
+	 * packet buffer, so that the caller can safely modify the
+	 * boot server reply packet stored therein.  However, this
+	 * field was not present in earlier versions of the PXE spec,
+	 * and there is at least one PXE NBP (Altiris) which allocates
+	 * only exactly enough space for this earlier, shorter version
+	 * of the structure.  If we actually fill in the BufferLimit
+	 * field, we therefore risk trashing random areas of the
+	 * caller's memory.  If we *don't* fill it in, then the caller
+	 * is at liberty to assume that whatever random value happened
+	 * to be in that location represents the length of the buffer
+	 * we've just passed back to it.
+	 *
+	 * Since older PXE stacks won't fill this field in anyway,
+	 * it's probably safe to assume that no callers actually rely
+	 * on it, so we choose to not fill it in.
+	 */
 	/* Copy to user-specified buffer, or set pointer to our buffer */
 	get_cached_info->BufferLimit = sizeof(*cached_info);
+#endif
 	/* PXESPEC: says to test for Buffer == NULL *and* BufferSize =
 	 * 0, but what are we supposed to do with a null buffer of
 	 * non-zero size?!
