Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 558585aa authored by Jing Min Zhao's avatar Jing Min Zhao Committed by David S. Miller
Browse files

[NETFILTER]: nf_conntrack_h323: check range first in sequence extension



Check range before checking STOP flag. This optimization may save a
nanosecond or less :)

Signed-off-by: default avatarJing Min Zhao <zhaojingmin@vivecode.com>
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 067b207b
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -555,15 +555,6 @@ int decode_seq(bitstr_t * bs, field_t * f, char *base, int level)

	/* Decode the extension components */
	for (opt = 0; opt < bmp2_len; opt++, i++, son++) {
		if (i < f->ub && son->attr & STOP) {
			PRINT("%*.s%s\n", (level + 1) * TAB_SIZE, " ",
			      son->name);
			return H323_ERROR_STOP;
		}

		if (!((0x80000000 >> opt) & bmp2))	/* Not present */
			continue;

		/* Check Range */
		if (i >= f->ub) {	/* Newer Version? */
			CHECK_BOUND(bs, 2);
@@ -573,6 +564,15 @@ int decode_seq(bitstr_t * bs, field_t * f, char *base, int level)
			continue;
		}

		if (son->attr & STOP) {
			PRINT("%*.s%s\n", (level + 1) * TAB_SIZE, " ",
			      son->name);
			return H323_ERROR_STOP;
		}

		if (!((0x80000000 >> opt) & bmp2))	/* Not present */
			continue;

		CHECK_BOUND(bs, 2);
		len = get_len(bs);
		CHECK_BOUND(bs, len);