]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
minor cleanups
authorAlan T. DeKok <aland@freeradius.org>
Wed, 6 Oct 2021 19:54:05 +0000 (15:54 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 6 Oct 2021 19:55:52 +0000 (15:55 -0400)
src/lib/util/struct.c

index 62ba9b56d93257fdd20dda4ee4e133ecd729865f..50e4428c14e802100576ad6be1052ac07a8e5c7d 100644 (file)
@@ -108,14 +108,18 @@ ssize_t fr_struct_from_network(TALLOC_CTX *ctx, fr_dcursor_t *cursor,
                size_t struct_len;
 
                struct_len = (p[0] << 8) | p[1];
-               if ((struct_len + 2) > data_len) {
-                       FR_PROTO_TRACE("too much data?");
+               if ((p + struct_len + 2) > end) {
+                       FR_PROTO_TRACE("Length header is larger than remaining data");
                        goto unknown;
                }
 
-               data_len = struct_len + 2;
-               end = data + data_len;
+               /*
+                *      Skip the "length" field, and tell the decoder
+                *      to stop at the end of the length field.
+                */
                p += 2;
+               end = p + struct_len;
+               data_len = struct_len + 2;
        }
 
        while (p < end) {