[lxc-devel] [PATCH 1/1] resolve lxcpath and rcfile arguments
Stéphane Graber
stgraber at ubuntu.com
Mon Nov 4 23:25:05 UTC 2013
On Mon, Nov 04, 2013 at 02:44:44PM -0600, Serge Hallyn wrote:
> So we don't always have to give full paths.
>
> realpath(x,NULL) mallocs memory, but these paths shouldn't get called
> from the API so not freeing should be ok.
>
What's the reason behind this change?
Am I reading this right that this will only affect cases where -P is
passed and that the default value won't be resolved?
In any case, I suspect this change is incomplete since we also support
-P in some of the python tools which wouldn't be resolved, leading to
lxc-info and others to fail to find the container (if for example
/var/lib/lxc is a symlink to say /data/containers).
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/arguments.c | 9 ++++++++-
> src/lxc/lxc_execute.c | 10 +++++++---
> src/lxc/lxc_start.c | 9 +++++++++
> 3 files changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/src/lxc/arguments.c b/src/lxc/arguments.c
> index adcf8fe..65b2284 100644
> --- a/src/lxc/arguments.c
> +++ b/src/lxc/arguments.c
> @@ -155,6 +155,7 @@ See the %s man page for further information.\n\n",
> static int lxc_arguments_lxcpath_add(struct lxc_arguments *args,
> const char *lxcpath)
> {
> + char *resolved_path = NULL;
> if (args->lxcpath_additional != -1 &&
> args->lxcpath_cnt > args->lxcpath_additional) {
> fprintf(stderr, "This command only accepts %d -P,--lxcpath arguments\n",
> @@ -168,7 +169,13 @@ static int lxc_arguments_lxcpath_add(struct lxc_arguments *args,
> lxc_error(args, "no memory");
> return -ENOMEM;
> }
> - args->lxcpath[args->lxcpath_cnt++] = lxcpath;
> + resolved_path = realpath(lxcpath, NULL);
> + if (!resolved_path) {
> + perror("realpath");
> + fprintf(stderr, "Error resolving lxcpath %s", lxcpath);
> + return -1;
> + }
> + args->lxcpath[args->lxcpath_cnt++] = resolved_path;
> return 0;
> }
>
> diff --git a/src/lxc/lxc_execute.c b/src/lxc/lxc_execute.c
> index 6a54bf6..083b5db 100644
> --- a/src/lxc/lxc_execute.c
> +++ b/src/lxc/lxc_execute.c
> @@ -105,9 +105,13 @@ int main(int argc, char *argv[])
> return -1;
>
> /* rcfile is specified in the cli option */
> - if (my_args.rcfile)
> - rcfile = (char *)my_args.rcfile;
> - else {
> + if (my_args.rcfile) {
> + rcfile = realpath((char *)my_args.rcfile, NULL);
> + if (!rcfile) {
> + SYSERROR("Failed to resolve file path: %s", my_args.rcfile);
> + return -1;
> + }
> + } else {
> int rc;
>
> rc = asprintf(&rcfile, "%s/%s/config", my_args.lxcpath[0], my_args.name);
> diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
> index add2542..7eea26a 100644
> --- a/src/lxc/lxc_start.c
> +++ b/src/lxc/lxc_start.c
> @@ -173,6 +173,15 @@ int main(int argc, char *argv[])
>
> const char *lxcpath = my_args.lxcpath[0];
>
> + if (my_args.rcfile) {
> + char *r = realpath(my_args.rcfile, NULL);
> + if (!r) {
> + SYSERROR("Failure resolving path: %s", my_args.rcfile);
> + exit(1);
> + }
> + my_args.rcfile = r;
> + }
> +
> /*
> * rcfile possibilities:
> * 1. rcfile from random path specified in cli option
> --
> 1.8.1.2
>
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models. Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
--
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20131104/e20a4905/attachment.pgp>
More information about the lxc-devel
mailing list