1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 09:21:26 +03:00

Merge pull request #13043 from poettering/strip-tab-ansi-no-static-size

util-lib: [static] array argument sizes are apparently not OK for NUL…
This commit is contained in:
Yu Watanabe 2019-07-13 18:12:39 +09:00 committed by GitHub
commit 94e016650d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 16 deletions

View File

@ -725,10 +725,17 @@ char *strreplace(const char *text, const char *old_string, const char *new_strin
return ret;
}
static void advance_offsets(ssize_t diff, size_t offsets[static 2], size_t shift[static 2], size_t size) {
static void advance_offsets(
ssize_t diff,
size_t offsets[2], /* note: we can't use [static 2] here, since this may be NULL */
size_t shift[static 2],
size_t size) {
if (!offsets)
return;
assert(shift);
if ((size_t) diff < offsets[0])
shift[0] += size;
if ((size_t) diff < offsets[1])
@ -844,8 +851,7 @@ char *strip_tab_ansi(char **ibuf, size_t *_isz, size_t highlight[2]) {
fclose(f);
free(*ibuf);
*ibuf = obuf;
free_and_replace(*ibuf, obuf);
if (_isz)
*_isz = osz;
@ -855,7 +861,7 @@ char *strip_tab_ansi(char **ibuf, size_t *_isz, size_t highlight[2]) {
highlight[1] += shift[1];
}
return obuf;
return *ibuf;
}
char *strextend_with_separator(char **x, const char *separator, ...) {

View File

@ -455,12 +455,13 @@ static int setup_input(
const ExecContext *context,
const ExecParameters *params,
int socket_fd,
int named_iofds[3]) {
const int named_iofds[static 3]) {
ExecInput i;
assert(context);
assert(params);
assert(named_iofds);
if (params->stdin_fd >= 0) {
if (dup2(params->stdin_fd, STDIN_FILENO) < 0)
@ -570,7 +571,7 @@ static int setup_output(
const ExecParameters *params,
int fileno,
int socket_fd,
int named_iofds[3],
const int named_iofds[static 3],
const char *ident,
uid_t uid,
gid_t gid,
@ -2721,9 +2722,7 @@ out:
static void append_socket_pair(int *array, size_t *n, const int pair[static 2]) {
assert(array);
assert(n);
if (!pair)
return;
assert(pair);
if (pair[0] >= 0)
array[(*n)++] = pair[0];
@ -2914,7 +2913,7 @@ static int exec_child(
ExecRuntime *runtime,
DynamicCreds *dcreds,
int socket_fd,
int named_iofds[3],
const int named_iofds[static 3],
int *fds,
size_t n_socket_fds,
size_t n_storage_fds,
@ -3782,7 +3781,7 @@ static int exec_child(
}
static int exec_context_load_environment(const Unit *unit, const ExecContext *c, char ***l);
static int exec_context_named_iofds(const ExecContext *c, const ExecParameters *p, int named_iofds[3]);
static int exec_context_named_iofds(const ExecContext *c, const ExecParameters *p, int named_iofds[static 3]);
int exec_spawn(Unit *unit,
ExecCommand *command,
@ -4110,13 +4109,18 @@ const char* exec_context_fdname(const ExecContext *c, int fd_index) {
}
}
static int exec_context_named_iofds(const ExecContext *c, const ExecParameters *p, int named_iofds[static 3]) {
static int exec_context_named_iofds(
const ExecContext *c,
const ExecParameters *p,
int named_iofds[static 3]) {
size_t i, targets;
const char* stdio_fdname[3];
size_t n_fds;
assert(c);
assert(p);
assert(named_iofds);
targets = (c->std_input == EXEC_INPUT_NAMED_FD) +
(c->std_output == EXEC_OUTPUT_NAMED_FD) +

View File

@ -1699,7 +1699,7 @@ int setup_tmp_dirs(const char *id, char **tmp_dir, char **var_tmp_dir) {
return 0;
}
int setup_netns(int netns_storage_socket[static 2]) {
int setup_netns(const int netns_storage_socket[static 2]) {
_cleanup_close_ int netns = -1;
int r, q;
@ -1762,7 +1762,7 @@ fail:
return r;
}
int open_netns_path(int netns_storage_socket[static 2], const char *path) {
int open_netns_path(const int netns_storage_socket[static 2], const char *path) {
_cleanup_close_ int netns = -1;
int q, r;

View File

@ -94,8 +94,8 @@ int setup_tmp_dirs(
char **tmp_dir,
char **var_tmp_dir);
int setup_netns(int netns_storage_socket[static 2]);
int open_netns_path(int netns_storage_socket[static 2], const char *path);
int setup_netns(const int netns_storage_socket[static 2]);
int open_netns_path(const int netns_storage_socket[static 2], const char *path);
const char* protect_home_to_string(ProtectHome p) _const_;
ProtectHome protect_home_from_string(const char *s) _pure_;

View File

@ -899,6 +899,8 @@ static int wireguard_read_key_file(const char *filename, uint8_t dest[static WG_
if (!filename)
return 0;
assert(dest);
r = read_full_file_full(filename, READ_FULL_FILE_SECURE | READ_FULL_FILE_UNBASE64, &key, &key_len);
if (r < 0)
return r;

View File

@ -660,6 +660,8 @@ int efi_set_boot_order(uint16_t *order, size_t n) {
static int boot_id_hex(const char s[static 4]) {
int id = 0, i;
assert(s);
for (i = 0; i < 4; i++)
if (s[i] >= '0' && s[i] <= '9')
id |= (s[i] - '0') << (3 - i) * 4;

View File

@ -652,6 +652,8 @@ int ethtool_set_glinksettings(
struct ifreq ifr = {};
int r;
assert(advertise);
if (autonegotiation != AUTONEG_DISABLE && memeqzero(advertise, sizeof(uint32_t) * N_ADVERTISE)) {
log_info("ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.");
return 0;

View File

@ -3021,6 +3021,8 @@ static enum action verb_to_action(const char *verb) {
static const char** make_extra_args(const char *extra_args[static 4]) {
size_t n = 0;
assert(extra_args);
if (arg_scope != UNIT_FILE_SYSTEM)
extra_args[n++] = "--user";

View File

@ -400,6 +400,9 @@ static int append_vendor_model(
const struct scsi_id_device *dev_scsi,
char buf[static VENDOR_LENGTH + MODEL_LENGTH]) {
assert(dev_scsi);
assert(buf);
if (strnlen(dev_scsi->vendor, VENDOR_LENGTH) != VENDOR_LENGTH)
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL),
"%s: bad vendor string \"%s\"",

View File

@ -156,6 +156,7 @@ static int get_subst_type(const char **str, bool strict, FormatSubstitutionType
assert(str);
assert(*str);
assert(ret_type);
assert(ret_attr);
if (*p == '$') {
p++;

View File

@ -1464,6 +1464,8 @@ static int attr_subst_subdir(char attr[static UTIL_PATH_SIZE]) {
const char *tail;
size_t len, size;
assert(attr);
tail = strstr(attr, "/*/");
if (!tail)
return 0;