1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-02 10:51:20 +03:00

journal: check fields we search for more carefully

This commit is contained in:
Lennart Poettering 2012-07-13 00:10:37 +02:00
parent 91a31dde6e
commit 362a3f8122

View File

@ -1426,6 +1426,34 @@ _public_ int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id12
return 0;
}
static bool field_is_valid(const char *field) {
const char *p;
assert(field);
if (isempty(field))
return false;
if (startswith(field, "__"))
return false;
for (p = field; *p; p++) {
if (*p == '_')
continue;
if (*p >= 'A' && *p <= 'Z')
continue;
if (*p >= '0' && *p <= '9')
continue;
return false;
}
return true;
}
_public_ int sd_journal_get_data(sd_journal *j, const char *field, const void **data, size_t *size) {
JournalFile *f;
uint64_t i, n;
@ -1442,7 +1470,7 @@ _public_ int sd_journal_get_data(sd_journal *j, const char *field, const void **
if (!size)
return -EINVAL;
if (isempty(field) || strchr(field, '='))
if (!field_is_valid(field))
return -EINVAL;
f = j->current_file;