]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Match what strcmp would return
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 5 Dec 2021 05:21:04 +0000 (00:21 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 5 Dec 2021 05:21:04 +0000 (00:21 -0500)
src/include/build.h

index 01a3a1fe4de7e7c80c00e96b7de6aede8158d8b9..b18a1011835e6ed7111c69a49ad3a61f1a9a0ed6 100644 (file)
@@ -99,12 +99,11 @@ do { \
  */
 #define MEMCMP_RETURN(_a, _b, _field, _len_field) \
 do { \
-       int8_t _ret = CMP((_a)->_len_field, (_b)->_len_field); \
-       int _mret; \
-       if (_ret != 0) return _ret; \
-       _mret = memcmp((_a)->_field, (_b)->_field, (_a)->_len_field); \
-       _ret = CMP(_mret, 0); \
+       int8_t _lret = CMP((_a)->_len_field, (_b)->_len_field); \
+       int8_t _ret; \
+       _ret = CMP(memcmp((_a)->_field, (_b)->_field, _lret > 0 ? (_a)->_len_field : (_b)->_len_field), 0); \
        if (_ret != 0) return _ret; \
+       return _lret; \
 } while (0)
 
 /** Remove const qualification from a pointer