[OpenWrt-Devel] [PATCH 3/3] avoid parsing InformationBuffer unless status is "success"

Bjørn Mork bjorn at mork.no
Tue Apr 7 09:22:24 EDT 2015


The MBIM specification requires that the InformationBuffer
is empty unless the status field is MBIM_STATUS_SUCCESS,
except for 4 explicit combinations of status code and
command id.

Avoid calling the reply handler if the status code is
non-zero and the information buffer is empty.

Signed-off-by: Bjørn Mork <bjorn at mork.no>
---
 mbim-dev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mbim-dev.c b/mbim-dev.c
index f4b26eb..c795666 100644
--- a/mbim-dev.c
+++ b/mbim-dev.c
@@ -107,7 +107,10 @@ mbim_recv(struct uloop_fd *u, unsigned int events)
 	case MBIM_MESSAGE_TYPE_COMMAND_DONE:
 		if (verbose)
 			printf("  status_code: %04X\n", le32toh(msg->status_code));
-		return_code = current_handler->response(msg->buffer, le32toh(msg->buffer_length));
+		if (msg->status_code && !msg->buffer_length)
+			return_code = -le32toh(msg->status_code);
+		else
+			return_code = current_handler->response(msg->buffer, le32toh(msg->buffer_length));
 		if (return_code < 0)
 			no_close = 0;
 		mbim_send_close_msg();
-- 
2.1.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list