X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fsd-journal.c;h=9f46f5c6aa4d85e3fa3f02ec2e7cc6a0b28455cb;hb=213ba152fdf7978773be5b8a72e040584765137f;hp=4f3f1b5ff393aede86ecc858503c642c53af545d;hpb=9eb977db5b89b44f254ab40c1876a76b7d7ea2d0;p=elogind.git diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 4f3f1b5ff..9f46f5c6a 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -115,8 +115,17 @@ _public_ int sd_journal_add_match(sd_journal *j, const void *data, size_t size) return -EINVAL; if (!data) return -EINVAL; - if (size <= 0) + if (size <= 1) return -EINVAL; + if (!memchr(data, '=', size)) + return -EINVAL; + if (*(char*) data == '=') + return -EINVAL; + + /* FIXME: iterating with multiple matches is currently + * broken */ + if (j->matches) + return -ENOTSUP; le_hash = htole64(hash64(data, size));