tree-wide: drop alloca() in loop

This commit is contained in:
Yu Watanabe 2019-06-20 06:29:19 +09:00
parent f9dc94408d
commit 6d946490ba
6 changed files with 28 additions and 13 deletions

View File

@ -371,7 +371,7 @@ static int enumerate_dir(
return 0;
}
static bool should_skip_path(const char *prefix, const char *suffix) {
static int should_skip_path(const char *prefix, const char *suffix) {
#if HAVE_SPLIT_USR
_cleanup_free_ char *target = NULL;
const char *p;
@ -383,10 +383,16 @@ static bool should_skip_path(const char *prefix, const char *suffix) {
return false;
NULSTR_FOREACH(p, prefixes) {
_cleanup_free_ char *tmp = NULL;
if (path_startswith(dirname, p))
continue;
if (path_equal(target, strjoina(p, "/", suffix))) {
tmp = path_join(p, suffix);
if (!tmp)
return -ENOMEM;
if (path_equal(target, tmp)) {
log_debug("%s redirects to %s, skipping.", dirname, target);
return true;
}
@ -423,7 +429,7 @@ static int process_suffix(const char *suffix, const char *onlyprefix) {
NULSTR_FOREACH(p, prefixes) {
_cleanup_free_ char *t = NULL;
if (should_skip_path(p, suffix))
if (should_skip_path(p, suffix) > 0)
continue;
t = strjoin(p, "/", suffix);

View File

@ -189,9 +189,11 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
"sclp_line0",
"ttysclp0",
"3270!tty1") {
const char *p;
_cleanup_free_ char *p = NULL;
p = strjoina("/sys/class/tty/", j);
p = path_join("/sys/class/tty", j);
if (!p)
return -ENOMEM;
if (access(p, F_OK) < 0)
continue;

View File

@ -1678,9 +1678,11 @@ static int add_syslog_identifier(sd_journal *j) {
assert(j);
STRV_FOREACH(i, arg_syslog_identifier) {
char *u;
_cleanup_free_ char *u = NULL;
u = strjoina("SYSLOG_IDENTIFIER=", *i);
u = strjoin("SYSLOG_IDENTIFIER=", *i);
if (!u)
return -ENOMEM;
r = sd_journal_add_match(j, u, 0);
if (r < 0)
return r;

View File

@ -264,8 +264,8 @@ static int map_all_fields(
if (handle_msg) {
v = startswith(p, "msg='");
if (v) {
_cleanup_free_ char *c = NULL;
const char *e;
char *c;
/* Userspace message. It's enclosed in
simple quotation marks, is not
@ -279,7 +279,10 @@ static int map_all_fields(
if (!e)
return 0; /* don't continue splitting up if the final quotation mark is missing */
c = strndupa(v, e - v);
c = strndup(v, e - v);
if (!c)
return -ENOMEM;
return map_all_fields(c, map_fields_userspace, "AUDIT_FIELD_", false, iov, n_iov_allocated, n_iov);
}
}

View File

@ -1600,14 +1600,16 @@ static int device_sysattrs_read_all(sd_device *device) {
return r;
FOREACH_DIRENT_ALL(dent, dir, return -errno) {
char *path;
_cleanup_free_ char *path = NULL;
struct stat statbuf;
/* only handle symlinks and regular files */
if (!IN_SET(dent->d_type, DT_LNK, DT_REG))
continue;
path = strjoina(syspath, "/", dent->d_name);
path = path_join(syspath, dent->d_name);
if (!path)
return -ENOMEM;
if (lstat(path, &statbuf) != 0)
continue;

View File

@ -648,11 +648,11 @@ int find_legacy_keymap(Context *c, char **ret) {
if (startswith_comma(c->x11_layout, a[1]))
matching = 5;
else {
char *x;
_cleanup_free_ char *x = NULL;
/* If that didn't work, strip off the
* other layouts from the entry, too */
x = strndupa(a[1], strcspn(a[1], ","));
x = strndup(a[1], strcspn(a[1], ","));
if (startswith_comma(c->x11_layout, x))
matching = 1;
}