From 553c5233d35b7648045a928004fdfc05b4e0d965 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 31 Dec 2019 01:57:13 -0500 Subject: Sanitize inputs BEFORE constructing a command string --- src/internal_cmd.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'src/internal_cmd.c') diff --git a/src/internal_cmd.c b/src/internal_cmd.c index 3801fda..f8a9701 100644 --- a/src/internal_cmd.c +++ b/src/internal_cmd.c @@ -10,13 +10,23 @@ static char *internal_commands[] = { "mkprefixbin", "generate prefix manifest (binary)", "mkprefixtext", "generate prefix manifest (text)", "rpath_set", "modify binary RPATH", + "rpath_autoset", "determine nearest lib directory and set RPATH", NULL, NULL, }; +/** + * + */ void mkprefix_interface_usage(void) { printf("usage: mkprefix[bin|text] {output_file} {dir} {prefix ...}\n"); } +/** + * Create prefix manifests from the CLI + * @param argc + * @param argv + * @return return value of `prefixes_write` + */ int mkprefix_interface(int argc, char **argv) { char *command = argv[0]; char *outfile = argv[1]; @@ -78,10 +88,10 @@ void rpath_set_interface_usage(void) { } /** - * + * Set a RPATH from the CLI * @param argc * @param argv - * @return + * @return return value of `rpath_set` */ int rpath_set_interface(int argc, char **argv) { if (argc < 3) { @@ -97,6 +107,32 @@ int rpath_set_interface(int argc, char **argv) { return result; } +/** + * + */ +void rpath_autoset_interface_usage(void) { + printf("usage: rpath_autoset {file} {rpath}\n"); +} + +/** + * Set a RPATH automatically from the CLI + * @param argc + * @param argv + * @return return value of `rpath_autoset` + */ +int rpath_autoset_interface(int argc, char **argv) { + if (argc < 2) { + rpath_autoset_interface_usage(); + return -1; + } + char *filename = argv[1]; + int result = rpath_autoset(filename); + if (result < 0) { + fprintf(SYSERROR); + } + return result; +} + /** * Show a listing of valid internal commands */ -- cgit