summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2016-02-23 20:17:41 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2016-02-23 21:38:52 +0100
commit6d6e063a0fd132c49490f01949dfa5fa28125a33 (patch)
tree686b83d884b47588f8f43ce0f3d2efaf4075ba7f
parenteccc91f9b0ef7387f46cdd93e3f44ab45e0c1ba3 (diff)
downloadlvm2-6d6e063a0fd132c49490f01949dfa5fa28125a33.tar.gz
libdm: fix string boundary
The test for string 'end' needs to account for ending \0, which also needs to fit <SIZE.
-rw-r--r--WHATS_NEW_DM1
-rw-r--r--libdm/libdm-report.c5
2 files changed, 4 insertions, 2 deletions
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 3dbbfae73..14793b385 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.118 -
=====================================
+ Fix string boundary check in _get_canonical_field_name().
Always initialized hist struct in _stats_parse_histogram().
Version 1.02.117 - 21st February 2016
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index 55b5ff0e3..0163910d3 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -839,8 +839,9 @@ static int _get_canonical_field_name(const char *field,
diff = 1;
continue;
}
- if (i >= fcanonical_len) {
- log_error("%s: field name too long", field);
+ if ((i + 1) >= fcanonical_len) {
+ canonical_field[0] = '\0';
+ log_error("%s: field name too long.", field);
return 0;
}
canonical_field[i++] = *field;