]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
check lengths for these, too
authorAlan T. DeKok <aland@freeradius.org>
Mon, 5 Feb 2018 19:45:28 +0000 (14:45 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 5 Feb 2018 19:45:28 +0000 (14:45 -0500)
src/lib/value.c

index 0a66bb075f2254860e2295da5f19c3f737649828..dabccaf884bfe0bcc575c576301e0609d9ab6fcb 100644 (file)
@@ -980,6 +980,8 @@ static int value_data_hton(value_data_t *dst, PW_TYPE dst_type, void const *src,
        /* 8 byte integers */
        switch (dst_type) {
        case PW_TYPE_INTEGER64:
+               if (src_len < sizeof(dst->integer64)) return -1;
+
                dst->integer64 = htonll(*(uint64_t const *)src);
                break;
 
@@ -987,11 +989,15 @@ static int value_data_hton(value_data_t *dst, PW_TYPE dst_type, void const *src,
        case PW_TYPE_INTEGER:
        case PW_TYPE_DATE:
        case PW_TYPE_SIGNED:
+               if (src_len < sizeof(dst->integer)) return -1;
+
                dst->integer = htonl(*(uint32_t const *)src);
                break;
 
        /* 2 byte integers */
        case PW_TYPE_SHORT:
+               if (src_len < sizeof(dst->ushort)) return -1;
+
                dst->ushort = htons(*(uint16_t const *)src);
                break;