Diff between 867ca173d6730b8d53b384adcc83900a047d18a1 and 82c524e4d06faeeb7e80e2a451c1b3a1aeee0fdc

Changed Files

File Additions Deletions Status
gobex/gobex-header.c +2 -0 modified
gobex/gobex-packet.c +6 -0 modified
gobex/gobex.c +9 -1 modified

Full Patch

diff --git a/gobex/gobex-header.c b/gobex/gobex-header.c
index fe70c8b..ed7fd08 100644
--- a/gobex/gobex-header.c
+++ b/gobex/gobex-header.c
@@ -146,6 +146,8 @@ GObexHeader *g_obex_header_decode(const void *data, gsize len,
 	GError *conv_err = NULL;
 
 	if (len < 2) {
+		if (!err)
+			return NULL;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_PARSE_ERROR,
 						"Too short header in packet");
 		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
diff --git a/gobex/gobex-packet.c b/gobex/gobex-packet.c
index 4c14cf7..db56ed0 100644
--- a/gobex/gobex-packet.c
+++ b/gobex/gobex-packet.c
@@ -325,6 +325,8 @@ GObexPacket *g_obex_packet_decode(const void *data, gsize len,
 	g_obex_debug(G_OBEX_DEBUG_PACKET, "");
 
 	if (data_policy == G_OBEX_DATA_INHERIT) {
+		if (!err)
+			return NULL;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_INVALID_ARGS,
 							"Invalid data policy");
 		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
@@ -332,6 +334,8 @@ GObexPacket *g_obex_packet_decode(const void *data, gsize len,
 	}
 
 	if (len < 3 + header_offset) {
+		if (!err)
+			return NULL;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_PARSE_ERROR,
 					"Not enough data to decode packet");
 		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
@@ -343,6 +347,8 @@ GObexPacket *g_obex_packet_decode(const void *data, gsize len,
 
 	packet_len = g_ntohs(packet_len);
 	if (packet_len != len) {
+		if (!err)
+			return NULL;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_PARSE_ERROR,
 				"Incorrect packet length (%u != %zu)",
 				packet_len, len);
diff --git a/gobex/gobex.c b/gobex/gobex.c
index e7b081f..e9a08fa 100644
--- a/gobex/gobex.c
+++ b/gobex/gobex.c
@@ -526,6 +526,8 @@ static gboolean g_obex_send_internal(GObex *obex, struct pending_pkt *p,
 {
 
 	if (obex->io == NULL) {
+		if (!err)
+			return FALSE;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_DISCONNECTED,
 					"The transport is not connected");
 		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
@@ -663,6 +665,8 @@ gboolean g_obex_send(GObex *obex, GObexPacket *pkt, GError **err)
 	g_obex_debug(G_OBEX_DEBUG_COMMAND, "conn %u", obex->conn_id);
 
 	if (obex == NULL || pkt == NULL) {
+		if (!err)
+			return FALSE;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_INVALID_ARGS,
 				"Invalid arguments");
 		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
@@ -1230,6 +1234,8 @@ static gboolean read_stream(GObex *obex, GError **err)
 	obex->rx_pkt_len = g_ntohs(u16);
 
 	if (obex->rx_pkt_len > obex->rx_mtu) {
+		if (!err)
+			return FALSE;
 		g_set_error(err, G_OBEX_ERROR, G_OBEX_ERROR_PARSE_ERROR,
 				"Too big incoming packet");
 		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
@@ -1302,7 +1308,9 @@ static gboolean read_packet(GObex *obex, GError **err)
 
 	return TRUE;
 fail:
-	g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
+	if (err)
+		g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", (*err)->message);
+
 	return FALSE;
 }