journal: move journal_field_valid() to journal_file.c
This commit is contained in:
parent
b17f651a17
commit
adce225a10
|
@ -24,7 +24,7 @@
|
||||||
#include "hexdecoct.h"
|
#include "hexdecoct.h"
|
||||||
#include "io-util.h"
|
#include "io-util.h"
|
||||||
#include "ioprio.h"
|
#include "ioprio.h"
|
||||||
#include "journal-util.h"
|
#include "journal-file.h"
|
||||||
#include "mountpoint-util.h"
|
#include "mountpoint-util.h"
|
||||||
#include "namespace.h"
|
#include "namespace.h"
|
||||||
#include "parse-util.h"
|
#include "parse-util.h"
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include "io-util.h"
|
#include "io-util.h"
|
||||||
#include "ioprio.h"
|
#include "ioprio.h"
|
||||||
#include "ip-protocol-list.h"
|
#include "ip-protocol-list.h"
|
||||||
#include "journal-util.h"
|
#include "journal-file.h"
|
||||||
#include "limits-util.h"
|
#include "limits-util.h"
|
||||||
#include "load-fragment.h"
|
#include "load-fragment.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
|
@ -1521,6 +1521,44 @@ int journal_file_find_data_object(
|
||||||
ret, ret_offset);
|
ret, ret_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool journal_field_valid(const char *p, size_t l, bool allow_protected) {
|
||||||
|
const char *a;
|
||||||
|
|
||||||
|
/* We kinda enforce POSIX syntax recommendations for
|
||||||
|
environment variables here, but make a couple of additional
|
||||||
|
requirements.
|
||||||
|
|
||||||
|
http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html */
|
||||||
|
|
||||||
|
if (l == (size_t) -1)
|
||||||
|
l = strlen(p);
|
||||||
|
|
||||||
|
/* No empty field names */
|
||||||
|
if (l <= 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Don't allow names longer than 64 chars */
|
||||||
|
if (l > 64)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Variables starting with an underscore are protected */
|
||||||
|
if (!allow_protected && p[0] == '_')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Don't allow digits as first character */
|
||||||
|
if (p[0] >= '0' && p[0] <= '9')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Only allow A-Z0-9 and '_' */
|
||||||
|
for (a = p; a < p + l; a++)
|
||||||
|
if ((*a < 'A' || *a > 'Z') &&
|
||||||
|
(*a < '0' || *a > '9') &&
|
||||||
|
*a != '_')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static int journal_file_append_field(
|
static int journal_file_append_field(
|
||||||
JournalFile *f,
|
JournalFile *f,
|
||||||
const void *field, uint64_t size,
|
const void *field, uint64_t size,
|
||||||
|
|
|
@ -271,3 +271,5 @@ static inline bool JOURNAL_FILE_COMPRESS(JournalFile *f) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t journal_file_hash_data(JournalFile *f, const void *data, size_t sz);
|
uint64_t journal_file_hash_data(JournalFile *f, const void *data, size_t sz);
|
||||||
|
|
||||||
|
bool journal_field_valid(const char *p, size_t l, bool allow_protected);
|
||||||
|
|
|
@ -137,41 +137,3 @@ int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_use
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool journal_field_valid(const char *p, size_t l, bool allow_protected) {
|
|
||||||
const char *a;
|
|
||||||
|
|
||||||
/* We kinda enforce POSIX syntax recommendations for
|
|
||||||
environment variables here, but make a couple of additional
|
|
||||||
requirements.
|
|
||||||
|
|
||||||
http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html */
|
|
||||||
|
|
||||||
if (l == (size_t) -1)
|
|
||||||
l = strlen(p);
|
|
||||||
|
|
||||||
/* No empty field names */
|
|
||||||
if (l <= 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Don't allow names longer than 64 chars */
|
|
||||||
if (l > 64)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Variables starting with an underscore are protected */
|
|
||||||
if (!allow_protected && p[0] == '_')
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Don't allow digits as first character */
|
|
||||||
if (p[0] >= '0' && p[0] <= '9')
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* Only allow A-Z0-9 and '_' */
|
|
||||||
for (a = p; a < p + l; a++)
|
|
||||||
if ((*a < 'A' || *a > 'Z') &&
|
|
||||||
(*a < '0' || *a > '9') &&
|
|
||||||
*a != '_')
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
|
@ -6,6 +6,5 @@
|
||||||
|
|
||||||
#include "sd-journal.h"
|
#include "sd-journal.h"
|
||||||
|
|
||||||
bool journal_field_valid(const char *p, size_t l, bool allow_protected);
|
|
||||||
int journal_access_blocked(sd_journal *j);
|
int journal_access_blocked(sd_journal *j);
|
||||||
int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_users);
|
int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_users);
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#include "hexdecoct.h"
|
#include "hexdecoct.h"
|
||||||
#include "hostname-util.h"
|
#include "hostname-util.h"
|
||||||
#include "in-addr-util.h"
|
#include "in-addr-util.h"
|
||||||
#include "journal-util.h"
|
#include "journal-file.h"
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
#include "locale-util.h"
|
#include "locale-util.h"
|
||||||
#include "memory-util.h"
|
#include "memory-util.h"
|
||||||
|
|
Loading…
Reference in New Issue