ISOCLNS: Fix some warnings
The warnings were:
./print-isoclns.c: In function 'osi_print_cksum':
./print-isoclns.c:3107:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
|| length > ndo->ndo_snaplen
^
./print-isoclns.c:3108:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
|| checksum_offset > ndo->ndo_snaplen
^
Upstream patch https://github.com/the-tcpdump-group/tcpdump/commit/bf88d85d00297bb537b7856afb5d06e13f4cbd0d
Change-Id: I30d77415f5c336007031c50061c441aa5d53c040
diff --git a/print-isoclns.c b/print-isoclns.c
index f8de7bc..10f0be9 100644
--- a/print-isoclns.c
+++ b/print-isoclns.c
@@ -559,8 +559,8 @@
uint8_t neighbor_extd_local_circuit_id[4];
};
-static void osi_print_cksum(netdissect_options *, const uint8_t *pptr, uint16_t checksum,
- u_int checksum_offset, u_int length);
+static void osi_print_cksum(netdissect_options *, const uint8_t *pptr,
+ uint16_t checksum, int checksum_offset, int length);
static int clnp_print(netdissect_options *, const uint8_t *, u_int);
static void esis_print(netdissect_options *, const uint8_t *, u_int);
static int isis_print(netdissect_options *, const uint8_t *, u_int);
@@ -3075,9 +3075,8 @@
}
static void
-osi_print_cksum(netdissect_options *ndo,
- const uint8_t *pptr, uint16_t checksum,
- u_int checksum_offset, u_int length)
+osi_print_cksum(netdissect_options *ndo, const uint8_t *pptr,
+ uint16_t checksum, int checksum_offset, int length)
{
uint16_t calculated_checksum;
@@ -3087,6 +3086,8 @@
* or the base pointer is not sane
*/
if (!checksum
+ || length < 0
+ || checksum_offset < 0
|| length > ndo->ndo_snaplen
|| checksum_offset > ndo->ndo_snaplen
|| checksum_offset > length) {