]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Avoid type conflicts in fr_dbuff_advance
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 28 Jan 2021 16:04:47 +0000 (16:04 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 28 Jan 2021 16:04:52 +0000 (16:04 +0000)
src/lib/eap_aka_sim/encode.c
src/lib/util/dbuff.h
src/protocols/dhcpv6/encode.c

index c56e3786dcedc99790d84345d710e23da3867828..bdcccdb871783c5086ca4619c2d961cf2b267f61 100644 (file)
@@ -706,8 +706,8 @@ static inline ssize_t encode_tlv_internal(fr_dbuff_t *dbuff,
                                              value_len, encoder_ctx);
                if (slen < 0) return PAIR_ENCODE_FATAL_ERROR;
 
-               FR_DBUFF_EXTEND_LOWAT_OR_RETURN(&work_dbuff, (size_t) slen - value_len);
-               fr_dbuff_advance(&work_dbuff, slen - value_len);
+               FR_DBUFF_EXTEND_LOWAT_OR_RETURN(&work_dbuff, (size_t)slen - value_len);
+               fr_dbuff_advance(&work_dbuff, (size_t)slen - value_len);
        }
 
        FR_PROTO_HEX_DUMP(fr_dbuff_start(&work_dbuff), fr_dbuff_used(&work_dbuff), "Done TLV");
index 1aa5d2ddb0c9481800d96076bf5149c0df61f317..3c02e5baed5f0e665d93d5c66a7226374988fa49 100644 (file)
@@ -29,14 +29,14 @@ RCSIDH(dbuff_h, "$Id$")
 extern "C" {
 #  endif
 
+#include <errno.h>
 #include <freeradius-devel/missing.h>
 #include <freeradius-devel/util/debug.h>
 #include <freeradius-devel/util/net.h>
+#include <limits.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <sys/types.h>
-#include <limits.h>
-#include <errno.h>
 
 /** A dbuff
  *
@@ -936,14 +936,12 @@ _fr_dbuff_set(\
        fr_dbuff_set(_dbuff_or_marker, \
                     (fr_dbuff_current(_dbuff_or_marker) + \
                     (_Generic((_len), \
-                       uint8_t : (size_t)(_len), \
-                       uint16_t : (size_t)(_len), \
-                       uint32_t : (size_t)(_len), \
-                       uint64_t : (size_t)(_len), \
-                       int : (size_t)(_len), \
-                       long : (size_t)(_len), \
-                       long long : (size_t)(_len), \
-                       size_t : (_len) \
+                       unsigned char : (size_t)(_len), \
+                       unsigned short : (size_t)(_len), \
+                       unsigned int : (size_t)(_len), \
+                       unsigned long : (size_t)(_len), \
+                       unsigned long long : (size_t)(_len), \
+                       int : (fr_cond_assert((_len) >= 0) ? (size_t)(_len) : 0) \
                     ))))
 
 /** Advance the 'current' position in dbuff or marker by _len bytes returning if _len is out of range
index 371a2b7437f61ccf80a097577bc134545ef1d91a..396685e5e8f3abe9617f6f11cfda5c5900313f87 100644 (file)
@@ -171,7 +171,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff,
                        if ((da->flags.subtype == FLAG_ENCODE_PARTIAL_DNS_LABEL) &&
                            (*(fr_dbuff_current(&p) + fr_dbuff_current(&p)[0] + 1) == 0)) {
                                fr_dbuff_set_to_start(&work_dbuff);
-                               fr_dbuff_advance(&work_dbuff, slen - 1);
+                               fr_dbuff_advance(&work_dbuff, (size_t)slen - 1);
                        }
                        break;
                }
@@ -321,7 +321,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff,
                        fr_dict_attr_t **u;
 
                        memcpy(&u, &c, sizeof(c)); /* const issues */
-                       memcpy(u, &vp->da, sizeof(vp->da));                     
+                       memcpy(u, &vp->da, sizeof(vp->da));
                }
                FALL_THROUGH;