commit: 70676c12f78bcf99ebc29901a6db36cbee6044c9
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 2 14:04:19 2020 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Jan 2 14:04:19 2020 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=70676c12
libq/tree: fix off-by-ones
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
libq/tree.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libq/tree.c b/libq/tree.c
index e7914f1..186fb4d 100644
--- a/libq/tree.c
+++ b/libq/tree.c
@@ -912,7 +912,7 @@ tree_read_file_binpkg_xpak_cb(
while (isspace((int)data[data_offset + data_len - 1]))
data_len--;
- if (len - pos < (size_t)data_len) {
+ if (len - pos < (size_t)(data_len + 1)) {
char *old_data = m->Q__data;
len += (((data_len + 1) / BUFSIZ) + 1) * BUFSIZ;
m->Q__data = xrealloc(m->Q__data, len);
@@ -1028,7 +1028,7 @@ tree_pkg_meta_get_int(tree_pkg_ctx *pkg_ctx, size_t
offset, const char *keyn)
len = (size_t)m->Q__md5_;
/* TODO: this is an exact copy from
tree_read_file_binpkg_xpak_cb */
- if (len - pos < (size_t)s.st_size) {
+ if (len - pos < (size_t)(s.st_size + 1)) {
char *old_data = m->Q__data;
len += (((s.st_size + 1) / BUFSIZ) + 1) *
BUFSIZ;
m->Q__data = xrealloc(m->Q__data, len);
@@ -1049,7 +1049,7 @@ tree_pkg_meta_get_int(tree_pkg_ctx *pkg_ctx, size_t
offset, const char *keyn)
char *p = *key = m->Q__data + pos;
p[s.st_size] = '\0';
while (s.st_size > 0 &&
isspace((int)p[s.st_size - 1]))
- p[s.st_size--] = '\0';
+ p[--s.st_size] = '\0';
pos += s.st_size + 1;
m->Q__eclasses_ = (char *)pos;
}