]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Zero length octets attributes are a thing
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 15 Dec 2017 21:54:34 +0000 (21:54 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 15 Dec 2017 21:54:34 +0000 (21:54 +0000)
src/lib/util/value.c

index 7996a5a9248389cbd3d8e3f8ac6bb778af19e964..4b76fd1206ab86d5794652e0ee6a9439ed96f605 100644 (file)
@@ -3338,8 +3338,10 @@ char *fr_value_box_asprint(TALLOC_CTX *ctx, fr_value_box_t const *data, char quo
                p[0] = '0';
                p[1] = 'x';
 
-               fr_bin2hex(p + 2, data->vb_octets, data->datum.length);
-               p[2 + (data->datum.length * 2)] = '\0';
+               if (data->vb_octets) {
+                       fr_bin2hex(p + 2, data->vb_octets, data->datum.length);
+                       p[2 + (data->datum.length * 2)] = '\0';
+               }
                break;
 
        /*
@@ -3726,9 +3728,11 @@ size_t fr_value_box_snprint(char *out, size_t outlen, fr_value_box_t const *data
                }
 
                /* Get maximum number of uint8s we can encode given freespace */
-               max = ((freespace % 2) ? freespace - 1 : freespace - 2) / 2;
-               fr_bin2hex(out, data->vb_octets,
-                          ((size_t)data->datum.length > max) ? max : (size_t)data->datum.length);
+               if (data->vb_octets) {
+                       max = ((freespace % 2) ? freespace - 1 : freespace - 2) / 2;
+                       fr_bin2hex(out, data->vb_octets,
+                                  ((size_t)data->datum.length > max) ? max : (size_t)data->datum.length);
+               }
        }
                return len;