lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 10 Aug 2021 16:48:14 -0400 From: Steven Rostedt <rostedt@...dmis.org> To: linux-trace-devel@...r.kernel.org Cc: linux-kernel@...r.kernel.org, Tom Zanussi <zanussi@...nel.org>, Daniel Bristot de Oliveira <bristot@...hat.com>, Masami Hiramatsu <mhiramat@...nel.org>, Namhyung Kim <namhyung@...nel.org>, linux-rt-users <linux-rt-users@...r.kernel.org>, Clark Williams <williams@...hat.com>, "Steven Rostedt (VMware)" <rostedt@...dmis.org> Subject: [PATCH 5/9] libtracefs: Add API tracefs_list_dup() From: "Steven Rostedt (VMware)" <rostedt@...dmis.org> Add an API tracefs_list_dup() that will duplicate an existing list. Signed-off-by: Steven Rostedt (VMware) <rostedt@...dmis.org> --- include/tracefs.h | 1 + src/tracefs-utils.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/tracefs.h b/include/tracefs.h index f1e4ffa0d65f..6fb66c44afc7 100644 --- a/include/tracefs.h +++ b/include/tracefs.h @@ -67,6 +67,7 @@ void tracefs_list_free(char **list); char **tracefs_list_add(char **list, const char *string); int tracefs_list_size(char **list); int tracefs_list_pop(char **list); +char **tracefs_list_dup(char **list); /** * tracefs_trace_on_get_fd - Get a file descriptor of "tracing_on" in given instance diff --git a/src/tracefs-utils.c b/src/tracefs-utils.c index 63bb413298fe..8c92d6c54ab1 100644 --- a/src/tracefs-utils.c +++ b/src/tracefs-utils.c @@ -489,3 +489,29 @@ int tracefs_list_size(char **list) list--; return (int)*(unsigned long *)list; } + +/** + * tracefs_list_dup - create a duplicate list + * @list: The list to duplicate + * + * Allocates a new list that can be modified and freed separately. + * + * Returns a new allocated list that must be freed with + * tracefs_list_free(), or NULL on error. + */ +char **tracefs_list_dup(char **list) +{ + char **new = NULL; + char **tmp; + int i; + + for (i = 0; list[i]; i++) { + tmp = tracefs_list_add(new, list[i]); + if (!tmp) { + free(new); + return NULL; + } + new = tmp; + } + return new; +} -- 2.30.2
Powered by blists - more mailing lists