]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
sbuff reparse should set current to start
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 26 Oct 2021 20:36:12 +0000 (16:36 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Oct 2021 16:16:04 +0000 (12:16 -0400)
src/lib/util/sbuff.h

index ea5d253adbbd9ceeb40cf443d7eef5ebd470c421..e87780db9e6b405aab138a2ec361c6785ca6926c 100644 (file)
@@ -390,12 +390,12 @@ do { \
  *
  * @private
  */
-#define _FR_SBUFF(_sbuff_or_marker, _start, _end, _adv_parent) \
+#define _FR_SBUFF(_sbuff_or_marker, _start, _current, _end, _adv_parent) \
 ((fr_sbuff_t){ \
        .buff           = fr_sbuff_buff(_sbuff_or_marker), \
        .start          = (_start), \
        .end            = (_end), \
-       .p              = fr_sbuff_current(_sbuff_or_marker), \
+       .p              = (_current), \
        .is_const       = fr_sbuff_ptr(_sbuff_or_marker)->is_const, \
        .adv_parent     = (_adv_parent), \
        .shifted        = fr_sbuff_ptr(_sbuff_or_marker)->shifted, \
@@ -413,6 +413,7 @@ do { \
  * @param[in] _sbuff_or_marker to make an ephemeral copy of.
  */
 #define FR_SBUFF(_sbuff_or_marker) _FR_SBUFF(_sbuff_or_marker, \
+                                            fr_sbuff_current(_sbuff_or_marker), \
                                             fr_sbuff_current(_sbuff_or_marker), \
                                             fr_sbuff_end(_sbuff_or_marker), \
                                             0x00)
@@ -426,6 +427,7 @@ do { \
  */
 #define FR_SBUFF_ABS(_sbuff_or_marker) _FR_SBUFF(_sbuff_or_marker, \
                                                 fr_sbuff_start(_sbuff_or_marker), \
+                                                fr_sbuff_current(_sbuff_or_marker), \
                                                 fr_sbuff_end(_sbuff_or_marker), \
                                                 0x00)
 
@@ -441,6 +443,7 @@ do { \
  * @param[in] _sbuff_or_marker to make an ephemeral copy of.
  */
 #define FR_SBUFF_REPARSE(_sbuff_or_marker) _FR_SBUFF(_sbuff_or_marker, \
+                                                    fr_sbuff_start(_sbuff_or_marker), \
                                                     fr_sbuff_start(_sbuff_or_marker), \
                                                     fr_sbuff_current(_sbuff_or_marker), \
                                                     0x00)
@@ -453,6 +456,7 @@ do { \
  * @param[in] _sbuff_or_marker to make an ephemeral copy of.
  */
 #define FR_SBUFF_BIND_CURRENT(_sbuff_or_marker) _FR_SBUFF(_sbuff_or_marker, \
+                                                         fr_sbuff_current(_sbuff_or_marker), \
                                                          fr_sbuff_current(_sbuff_or_marker), \
                                                          fr_sbuff_end(_sbuff_or_marker), \
                                                          0x01)
@@ -466,6 +470,7 @@ do { \
  */
 #define FR_SBUFF_BIND_CURRENT_ABS(_sbuff_or_marker) FR_SBUFF_ABS(_sbuff_or_marker, \
                                                                 fr_sbuff_start(_sbuff_or_marker), \
+                                                                fr_sbuff_current(_sbuff_or_marker), \
                                                                 fr_sbuff_end(_sbuff_or_marker), \
                                                                 0x01)