pxenv_get_cached_info: Return our buffer if client provided buffer has 0 size.
The WDS nbp calls pxenv_get_cached_info with a non-NULL buffer pointer
but a zero buffer size and expects the PXE stack to return the result
in the stack's buffer, which is not entirely according to the PXE spec.

diff -pruN etherboot-5.4.3/src/core/pxe_export.c etherboot-5.4.3.new/src/core/pxe_export.c
--- etherboot-5.4.3/src/core/pxe_export.c	2008-07-01 11:31:23.000000000 -0700
+++ etherboot-5.4.3.new/src/core/pxe_export.c	2008-07-01 11:34:34.000000000 -0700
@@ -1133,7 +1133,7 @@ PXENV_EXIT_t pxenv_get_cached_info ( t_P
 	 * 0, but what are we supposed to do with a null buffer of
 	 * non-zero size?!
 	 */
-	if ( IS_NULL_SEGOFF16 ( get_cached_info->Buffer ) ) {
+	if ( IS_NULL_SEGOFF16 ( get_cached_info->Buffer ) || (get_cached_info->BufferSize == 0)) {
 		/* Point back to our buffer */
 		PTR_TO_SEGOFF16 ( cached_info, get_cached_info->Buffer );
 		get_cached_info->BufferSize = sizeof(*cached_info);
