mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-14 09:47:06 +00:00
cgroups: remove stack allocations
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
57668944d4
commit
861cb8c28a
@ -58,6 +58,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
|
#include "memory_utils.h"
|
||||||
#include "storage/storage.h"
|
#include "storage/storage.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
@ -888,15 +889,18 @@ static bool controller_in_clist(char *cgline, char *c)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
len = eol - cgline;
|
len = eol - cgline;
|
||||||
tmp = alloca(len + 1);
|
tmp = must_realloc(NULL, len + 1);
|
||||||
memcpy(tmp, cgline, len);
|
memcpy(tmp, cgline, len);
|
||||||
tmp[len] = '\0';
|
tmp[len] = '\0';
|
||||||
|
|
||||||
lxc_iterate_parts(tok, tmp, ",") {
|
lxc_iterate_parts(tok, tmp, ",") {
|
||||||
if (strcmp(tok, c) == 0)
|
if (strcmp(tok, c) == 0) {
|
||||||
|
free(tmp);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(tmp);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2209,15 +2213,12 @@ __cgfsng_ops static int cgfsng_get(struct cgroup_ops *ops, const char *filename,
|
|||||||
char *value, size_t len, const char *name,
|
char *value, size_t len, const char *name,
|
||||||
const char *lxcpath)
|
const char *lxcpath)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
__do_free char *controller;
|
||||||
size_t controller_len;
|
char *p, *path;
|
||||||
char *controller, *p, *path;
|
|
||||||
struct hierarchy *h;
|
struct hierarchy *h;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
controller_len = strlen(filename);
|
controller = must_copy_string(filename);
|
||||||
controller = alloca(controller_len + 1);
|
|
||||||
(void)strlcpy(controller, filename, controller_len + 1);
|
|
||||||
|
|
||||||
p = strchr(controller, '.');
|
p = strchr(controller, '.');
|
||||||
if (p)
|
if (p)
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
@ -2248,15 +2249,12 @@ __cgfsng_ops static int cgfsng_set(struct cgroup_ops *ops,
|
|||||||
const char *filename, const char *value,
|
const char *filename, const char *value,
|
||||||
const char *name, const char *lxcpath)
|
const char *name, const char *lxcpath)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
__do_free char *controller;
|
||||||
size_t controller_len;
|
char *p, *path;
|
||||||
char *controller, *p, *path;
|
|
||||||
struct hierarchy *h;
|
struct hierarchy *h;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
controller_len = strlen(filename);
|
controller = must_copy_string(filename);
|
||||||
controller = alloca(controller_len + 1);
|
|
||||||
(void)strlcpy(controller, filename, controller_len + 1);
|
|
||||||
|
|
||||||
p = strchr(controller, '.');
|
p = strchr(controller, '.');
|
||||||
if (p)
|
if (p)
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
@ -2363,18 +2361,14 @@ out:
|
|||||||
static int cg_legacy_set_data(struct cgroup_ops *ops, const char *filename,
|
static int cg_legacy_set_data(struct cgroup_ops *ops, const char *filename,
|
||||||
const char *value)
|
const char *value)
|
||||||
{
|
{
|
||||||
size_t len;
|
__do_free char *controller;
|
||||||
char *fullpath, *p;
|
char *fullpath, *p;
|
||||||
/* "b|c <2^64-1>:<2^64-1> r|w|m" = 47 chars max */
|
/* "b|c <2^64-1>:<2^64-1> r|w|m" = 47 chars max */
|
||||||
char converted_value[50];
|
char converted_value[50];
|
||||||
struct hierarchy *h;
|
struct hierarchy *h;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
char *controller = NULL;
|
|
||||||
|
|
||||||
len = strlen(filename);
|
|
||||||
controller = alloca(len + 1);
|
|
||||||
(void)strlcpy(controller, filename, len + 1);
|
|
||||||
|
|
||||||
|
controller = must_copy_string(filename);
|
||||||
p = strchr(controller, '.');
|
p = strchr(controller, '.');
|
||||||
if (p)
|
if (p)
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
Loading…
Reference in New Issue
Block a user